Un trigger è un tipo speciale di stored procedure che viene eseguito quando un'istruzione INSERT, DELETE o UPDATE modifica i dati in una tabella.
server SQL inizia un Trigger AFTER DELETE ogni volta che si verifica un evento di istruzione di eliminazione.
È possibile scaricare lo script AFTER DELETE Trigger qui utilizzato in modo che sia possibile eseguire questo script sul server SQL locale, seguendo il problema riportato di seguito.
Vogliamo tenere traccia dei record cancellati dalla tabella dei dipendenti nella tabella employee_history.
Se un dipendente lascia la compagnia, il suo record verrà cancellato dalla tabella dei dipendenti. Tuttavia, verrà inserito nella tabella employee_history utilizzando il trigger AFTER DELETE.
Il nostro esempio avrà due tabelle: dipendente tavolo e employee_history tavolo.
Creeremo queste tabelle e le popoleremo con alcuni dati.
/ * Controllare se la tabella dei dipendenti esiste già o meno * / SE OBJECT_ID ('EMPLOYEE') NON È NULL DROP TABLE DIPENDENTE GO / * Crea tabella dei dipendenti se non esiste * / CREATE TABLE DIPENDENTE (EMPID INT PRIMARY KEY, FNAME VARCHAR ( 25), LNAME VARCHAR (25),) GO / * Popolare la tabella dei dipendenti con righe di esempio * / INSERT INTO DIPENDENTI (EMPID, FNAME, LNAME) VALORI (500, 'John', 'Smith'), (501, 'Alex' , 'Admas'), (502, 'Eric', 'James'), (503, 'Shaun', 'Marsh') GO / * Crea tabella employee_history con la stessa struttura della tabella employee senza righe * / IF OBJECT_ID ( 'EMPLOYEE_HISTORY') NON È NULL DROP TABLE EMPLOYEE_HISTORY GO SELECT * INTO EMPLOYEE_HISTORY FROM IMPLOYEE WHERE 1 = 0 - Questo popolerà la tabella Employee_history con 0 righe GO / * Visualizza i record della tabella da entrambe le tabelle. Abbiamo quattro righe in entrambe le tabelle * / SELECT * da EMPLOYEE e - 4 righe SELECT * da EMPLOYEE_HISTORY eh - 0 righe GO
Ora, se viene eliminato un qualsiasi record eliminato dalla tabella dei dipendenti, è necessario inserirlo nella tabella employee_history per riferimento futuro. Pertanto, in questo caso, creeremo un trigger AFTER DELETE.
/ * Dopo l'eliminazione Trigger sulla tabella dei dipendenti * / IF OBJECT_ID ('TRG_EmployeeHistory') NON È NULL DROP TRIGGER TRG_EmployeeHistory GO CREARE TRIGGER TRG_EmployeeHistory ON dbo.EMPLOYEE DOPO ELIMINARE COME INIZIARE INSERISCI IN EMPLOYEE_HISTORY SELECT * FROM DELETED END GO
Ora che abbiamo un trigger AFTER DELETE sulla tabella dei dipendenti, elimineremo una riga dalla tabella dei dipendenti per vedere il trigger al lavoro.
La riga cancellata verrà inserita nella tabella employee_history.
/ * Elimina un record dalla tabella dei dipendenti * / DELETE DA DIPENDENTE DOVE EMPID = 501 GO / * Notare entrambe le tabelle. Il record cancellato dal dipendente viene inserito in EMPLOYEE_HISTORY * / SELECT * da EMPLOYEE e - 3 rows SELECT * da EMPLOYEE_HISTORY eh - 1 row GO
Il CANCELLATO table è una tabella magica che mantiene le righe eliminate. Nel trigger AFTER DELETE, abbiamo utilizzato la tabella DELETED per tenere traccia delle righe eliminate. Queste righe vengono inserite nella tabella EMPLOYEE_HISTORY.
È anche possibile passare attraverso SQL Server: Coding After Trigger.