Latest web development tutorials

SQLite-Trigger

SQLite Datenbank-Trigger ist eine Callback-Funktion, wird es automatisch ausgeführt wird, wenn der Anruf / angegebene Datenbank Ereignis eintritt. Im Folgenden sind die wichtigsten Punkte auf dem Auslöser SQLite: SQLiteAuslöser (Trigger) wird die Callback - Funktion der Datenbank, wird es automatisch / Anruf ausführen , wenn eine bestimmte Datenbank - Ereignis eintritt.Im Folgenden sind die wichtigsten Punkte über SQLite Auslöser (Trigger) von:

  • SQLite Auslöser (Trigger) Trigger können zum Zeitpunkt des Auftretens eines bestimmten Datenbank-Tabellen DELETE, INSERT oder UPDATE angegeben werden, oder dann ausgelöst, wenn eine oder mehrere bestimmte Spalten einer Tabelle Aktualisierung auftritt.

  • SQLite unterstützt nur für jede Zeile Auslöser (Trigger), nicht für jede Anweisung Auslöser (Trigger). Daher explizit angeben, für jede Zeile ist optional.

  • WHEN - Klausel und der Auslöser (Trigger) Aktion kann unter Verwendung einer FormNEW.column-Namen und OLD.column-Namenangesprochen werden Referenzen eingefügt, gelöscht oder aktualisiert Zeilenelemente, Spaltenname wird mit dem Abzug aus den Tabellenspalten zugeordnet sind Name.

  • WHEN-Klausel, wenn vorgesehen ist, gilt nur für die WHEN-Klausel gibt die Zeilen von SQL-Anweisungen auszuführen. Wenn keine WHEN-Klausel für alle Zeilen von SQL-Anweisungen ausgeführt.

  • Nach der Umsetzung des Trigger-Aktion VOR oder NACH Schlüsselwort bestimmt, wann der Trigger-Aktion, wird die Entscheidung in den zugehörigen Zeilen eingefügt, oder bevor Sie löschen oder ändern.

  • Wenn die Tabelle mit dem Trigger zugeordnete automatisch gelöscht löschen Auslöser (Trigger).

  • So ändern Sie die Tabelle in derselben Datenbank vorhanden sein muss , wie der Trigger - Tabellen oder Ansichten befestigt und müssen nur denTabellennamen verwenden, statt database.tablename.

  • Eine spezielle Funktion SQL HEBEN () kann verwendet werden, um eine Ausnahme in dem Programm auszulösen.

Grammatik

Erstellen Sie einenTrigger (Trigger) Die grundlegende Syntax lautet wie folgt:

CREATE TRIGGER trigger_name [BEFORE | AFTER] event_name 
ON table_name
BEGIN
 - Triggerlogik geht hier ....
END;

Hier können event_name in der Tabelle table_namevonINSERTerwähntwerden, DELETE und UPDATEDatenbankoperationen. Sie können optional FOR EACH ROW nach dem Tabellennamen angeben.

Im Folgenden werden in der UPDATE-Operation angegeben in einer oder mehreren Tabellen auf die Säulen einen Auslöser (Trigger) Syntax zu erstellen:

CREATE TRIGGER trigger_name [BEFORE | AFTER] UPDATE OF Spalten_Name 
ON table_name
BEGIN
 - Triggerlogik geht hier ....
END;

Beispiele

Lassen Sie uns eine Situation übernehmen, wo wir in die neu erstellte Tabelle COMPANY eingefügt werden soll (wenn es bereits vorhanden ist, löschen Sie die neu erstellte) in jeder der Aufzeichnungen Audit-Test:

sqlite> CREATE TABLE COMPANY (
   ID INT PRIMARY KEY NOT NULL,
   Der Name TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (50),
   GEHALT REAL
);

Um Audit Studien zu erhalten, werden wir eine neue Tabelle namens AUDIT erstellen. Jedes Mal, wenn UNTERNEHMEN Tabelle einen neuen Rekord-Eintrag hat, wird die Log-Nachricht eingefügt:

sqlite> CREATE TABLE AUDIT (
    EMP_ID INT NOT NULL,
    ENTRY_DATE TEXT NOT NULL
);

Hier ID ist AUDIT Datensatz-ID, EMP_ID die ID aus der Tabelle FIRMA, DATE Zeitstempel halten wird erstellt, wenn COMPANY aufgezeichnet wird. Also, lassen Sie uns jetzt einen Trigger auf der Tabelle FIRMA wie folgt erstellen:

sqlite> TRIGGER audit_log AFTER INSERT CREATE 
EIN UNTERNEHMEN
BEGIN
   INSERT INTO AUDIT (EMP_ID, ENTRY_DATE) VALUES (new.ID, Datetime ( 'jetzt'));
END;

Wir werden nun einen Datensatz in der COMPANY Tabelle einzufügen, wird dies auf die Schaffung eines Audit-Protokollierung Audit-Tabelle führen. Also, lassen Sie uns einen Datensatz in der Tabelle FIRMA erstellen, wie folgt:

sqlite> INSERT INTO COMPANY (ID, Name, Alter, Adresse, GEHALT)
VALUES (1, 'Paul', 32, 'California', 20000.00);

Dies wird ein Datensatz in der folgenden Tabelle COMPANY erstellen:

ID Name Alter ADRESSE GEHALT
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20.000,0

Zur gleichen Zeit werden wir einen Datensatz in der Audit-Tabelle erstellen. Dieser Datensatz ist das Ergebnis eines Triggers, das ist der Auslöser wir Operationen auf Tabellen erstellt COMPANY (Trigger) INSERT. In ähnlicher Weise können Trigger auf UPDATE erstellen und DELETE-Operationen (Trigger).

EMP_ID ENTRY_DATE
---------- -------------------
12013-04-05 06.26.00

Listen auslösen (Trigger)

Sie können alle Trigger aussqlite_master Tabelle Liste, wie folgt:

sqlite> SELECT name FROM sqlite_master
WHERE type = "Auslöser";

Die obige SQLite-Anweisung enthält nur einen Eintrag, wie folgt:

Name
----------
audit_log

Wenn Sie den Auslöser auf einer bestimmten Tabelle auflisten möchten, verwenden Sie die AND-Klausel Tabellen verknüpft waren wie folgt:

sqlite> SELECT name FROM sqlite_master
WHERE type = "Auslöser" UND tbl_name = 'Unternehmen';

Die obige SQLite-Anweisung enthält nur einen Eintrag, wie folgt:

Name
----------
audit_log

Entfernen Sie den Auslöser (Trigger)

Im Folgenden wird, kann ein DROP-Befehl verwendet werden, um die vorhandenen Trigger zu entfernen:

sqlite> DROP TRIGGER trigger_name;