Latest web development tutorials

SQLite trigger

SQLite trigger del database è una funzione di callback, esso verrà eseguito automaticamente quando si verifica la chiamata / evento del database specificato. Di seguito sono riportati i principali punti della SQLite grilletto: SQLitetrigger (trigger) è la funzione di callback del database, si eseguirà automaticamente / chiamata quando si verifica un evento del database specificato.Di seguito sono i punti principali sui trigger SQLite (trigger) di:

  • trigger SQLite (trigger) trigger possono essere specificati al momento del verificarsi di una specifica tabelle del database DELETE, INSERT o UPDATE o attivati ​​quando si verifica una o più colonne specificate di un aggiornamento del tavolo.

  • SQLite supporta unicamente a ogni trigger ROW (trigger), non per ogni trigger ECONOMICO (trigger). Pertanto, esplicitamente definisce, per ogni ROW è opzionale.

  • Quando l'azione clausola e il grilletto (Trigger) si può accedere utilizzando unnome-NEW.column forma e OLD.column-nomeriferimenti inseriti, cancellati o elementi riga aggiornata, colonna nome è associato con il grilletto dalle colonne della tabella nome.

  • Clausola WHEN, se previsto, è vero solo per il WHEN clausola specifica le righe per eseguire istruzioni SQL. Se nessuna clausola Quando viene eseguito istruzioni SQL per tutte le righe.

  • Dopo l'applicazione del limite di azione prima o dopo la parola chiave determina quando il limite di azione, la decisione si inserisce nelle linee collegate, o prima di cancellare o modificare.

  • Quando la tabella associata con il grilletto eliminato eliminare automaticamente trigger (Trigger).

  • Per modificare la tabella deve esistere nello stesso database come trigger è collegato tabelle o viste, e deve usare solo iltablename, invece database.tablename.

  • Una funzione RAISE speciale SQL () può essere utilizzato per attivare un'eccezione all'interno del programma.

grammatica

Creare untrigger (Trigger) La sintassi di base è la seguente:

CREATE TRIGGER [PRIMA | DOPO] EVENT_NAME 
ON nome_tabella
BEGIN
 - La logica di trigger va qui ....
END;

Qui, event_name può essere menzionato nella tabella table_namediINSERT, DELETE e leoperazionidi aggiornamentodel database. Facoltativamente, è possibile specificare per ciascuna fila dopo il nome della tabella.

Di seguito sono specificati nell'operazione UPDATE in una o più tabelle sulle colonne creano un trigger (Trigger) sintassi:

CREATE TRIGGER [PRIMA | DOPO] AGGIORNAMENTO DI nome_colonna 
ON nome_tabella
BEGIN
 - La logica di trigger va qui ....
END;

Esempi

Ipotizziamo una situazione in cui vogliamo essere inserita nella tabella di società di nuova costituzione (se esiste già, eliminare il ri-generato) in ciascuno dei test di controllo tenuta dei registri:

sqlite> CREATE TABLE COMPANY (
   ID INT PRIMARY KEY NOT NULL,
   NOME TESTO NOT NULL,
   AGE INT NOT NULL,
   INDIRIZZO CHAR (50),
   STIPENDIO REALE
);

Al fine di mantenere le prove di verifica, creeremo una nuova tabella denominata AUDIT. Ogni volta che tavolo azienda ha una nuova voce di registrazione, verrà inserito il messaggio di registro:

sqlite> CREATE TABLE AUDIT (
    EMP_ID INT NOT NULL,
    Pick a TESTO NOT NULL
);

Qui, ID è AUDIT ID del record, EMP_ID l'ID dalla tabella COMPANY, viene creata DATA manterrà timestamp quando viene registrato COMPANY. Così, ora cerchiamo di creare un trigger sul tavolo COMPANY come segue:

sqlite> CREATE TRIGGER audit_log DOPO INSERT 
ON AZIENDA
BEGIN
   INSERT INTO AUDIT (EMP_ID, Pick a) VALORI (new.ID, datetime ( 'società'));
END;

Noi ora iniziare ad inserire un record nella tabella società, questo porterà alla creazione di una tabella di controllo registrazione di controllo. Quindi, creiamo un record nella tabella COMPANY, come segue:

sqlite> INSERT INTO COMPANY (ID, nome, età, indirizzo, STIPENDIO)
VALORI (1, 'Paul', 32, 'California', 20000.00);

Questo creerà un record nella tabella seguente COMPANY:

NOME ID Età Indirizzo STIPENDIO
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0

Allo stesso tempo, creeremo un record nella tabella di controllo. Questo disco è il risultato di un trigger, che è l'innesco inseriamo operazioni sulle tabelle COMPANY creato (trigger). Allo stesso modo, possono creare trigger su UPDATE e DELETE operazioni (trigger).

Pick a EMP_ID
---------- -------------------
12013-04-05 06:26:00

Liste innescare (trigger)

Si possono elencare tutti i trigger da tavolosqlite_master, come segue:

sqlite> selezionare il nome da sqlite_master
Dove tipo = 'trigger';

La dichiarazione di SQLite sopra elenca una sola voce, come segue:

nome
----------
audit_log

Se si desidera elencare il grilletto su un tavolo specifico, utilizzare la clausola AND per unire le tabelle sono stati i seguenti:

sqlite> selezionare il nome da sqlite_master
Dove tipo = 'trigger' E nome_tabella = 'SOCIETA';

La dichiarazione di SQLite sopra elenca una sola voce, come segue:

nome
----------
audit_log

Rimuovere il grilletto (trigger)

Il seguente è un comando DROP può essere usato per rimuovere il trigger esistente:

sqlite> GOCCIA TRIGGER;