Ein Trigger ist ein spezieller Typ einer gespeicherten Prozedur, die ausgeführt wird, wenn eine INSERT-, DELETE- oder UPDATE-Anweisung Daten in einer Tabelle ändert.
SQL Server initiiert eine Nach dem INSERT-Auslöser Immer wenn ein Insert-Anweisungsereignis auftritt.
Laden Sie das hier verwendete AFTER INSERT TRIGGER-Skript mit Beispielen herunter, sodass Sie das Skript auf Ihrem SQL Server-Computer ausführen können, während Sie das folgende Problem befolgen.
Unser Ziel ist, dass beim Einfügen eines Datensatzes in die Employee-Tabelle dieser Datensatz auch in die Employee_backup-Tabelle eingefügt werden soll. Unser Beispiel wird zwei Tabellen haben: Mitarbeiter und employee_backup. Wir erstellen diese Tabellen und füllen sie mit Daten auf.
/ * Prüfen, ob bereits eine Angestelltentabelle vorhanden ist * / WENN OBJECT_ID ('EMPLOYEE') NICHT NULL DROP TABLE EMPLOYEE GO ist / * Anlegen einer Angestellten-Tabelle, falls diese nicht existiert * / CREATE TABLE EMPLOYEE (EMPID INT PRIMARY KEY, 25), LNAME VARCHAR (25),) GO / * Employee-Tabelle mit Musterzeilen füllen * / INSERT IN EMPLID, FNAME, LNAME) VALUES (500, 'John', 'Smith'), (501, 'Alex') , 'Admas'), (502, 'Eric', 'James'), (503, 'Shaun', 'Marsh') GO / * Employee_backup-Tabelle mit Datensätzen aus Employee-Tabelle erstellen und synchronisieren, so dass beide Tabellen gleich sind records * / IF OBJECT_ID ('EMPLOYEE_BACKUP') IST NICHT NULL DROP TABLE EMPLOYEE_BACKUP GO SELECT * IN EMPLOYEE_BACKUP FROM EMPLOYEE GO / * Siehe die Tabellensätze beider Tabellen. Wir haben vier Zeilen in beiden Tabellen * / SELECT * von EMPLOYEE SELECT * von EMPLOYEE_BACKUP GO
Jetzt müssen wir beide Tabellen synchron halten, damit ein Datensatz, der in EMPLOYEE eingefügt wird, automatisch in EMPLOYEE_BACKUP eingefügt wird. In diesem Fall benötigen wir einen AFTER INSERT-Trigger.
Wir werden eine erstellen Nach dem INSERT-Auslöser auf Mitarbeiter Tisch
/ * After Insert-Auslöser für Mitarbeitertabelle * / IF OBJECT_ID ('TRG_InsertSyncEmp') IST NICHT NULL. DROP TRIGGER TRG_InsertSyncEmp. GO CREATE TRIGGER TRG_InsertSyncEmp nach dbo
Unser Auslöser wurde erfolgreich erstellt. Jetzt fügen wir einen Datensatz in die Employee-Tabelle ein, und wir haben denselben Datensatz in der Employee_backup-Tabelle, da wir einen AFTER INSERT-Auslöser für die Employee-Tabelle erstellt haben.
Das INSERTEDTabelle ist eine spezielle Tabelle, die nur die Zeilen enthält, die eingefügt werden. Daher verwenden wir diese INSERTED-Tabelle, um beide Tabellen synchron zu halten. Wir fügen die Zeilen aus der INSERTED-Tabelle, die mit Einfügeanweisungen für die Employee-Tabelle gefüllt ist, in die Employee_backup-Tabelle ein.
/ * Einen Datensatz in die Employee-Tabelle einfügen. Ein Insert-Trigger wird hier ausgeführt, und derselbe Datensatz wird in die employee_backup-Tabelle eingefügt. * / INSERT IN EMPLOYEE (EMPID, FNAME, LNAME) VALUES (504, 'Vish', 'Dalvi')
/ * Beide Tabellen sind mit der gleichen Anzahl von Datensätzen synchron. * / SELECT * von EMPLOYEE SELECT * von EMPLOYEE_BACKUP GO
Der AFTER INSERT-Trigger in der Tabelle EMPLOYEE ruft, sobald er auf eine Einfügeanweisung stößt, sofort eine andere Einfügeanweisung auf, um dieselbe Zeile in die Tabelle EMPLOYEE_HISTORY einzufügen.