SQL Server codant le déclencheur après suppression dans SQL Server

Un déclencheur est un type spécial de procédure stockée qui est exécuté lorsqu'une instruction INSERT, DELETE ou UPDATE modifie des données dans une table.

serveur SQL initie un Déclencheur APRES SUPPRIMER chaque fois qu'un événement d'instruction delete se produit.

Vous pouvez télécharger le script AFTER DELETE Trigger utilisé ici pour pouvoir exécuter ce script sur votre serveur SQL local, tout en suivant le problème ci-dessous.

Nous voulons garder une trace des enregistrements supprimés de la table employee dans la table employee_history.

Si un employé quitte l'entreprise, son enregistrement sera supprimé de la table des employés. Cependant, il sera inséré dans la table employee_history à l'aide du déclencheur AFTER DELETE.

Notre exemple aura deux tables: employé table et employé_histoire table.

Nous allons créer ces tables et les renseigner avec des données.

/ * Vérifie si la table des employés existe déjà ou non * / IF OBJECT_ID ('EMPLOYEE') EST PAS NULL TABLE DROP EMPLOYEE GO / * Crée une table des employés si elle n'existe pas * / CREATE TABLE EMPLOYEE (EMPID INT PRIMARY KEY, FNAME VARCHAR ( 25), LNAME VARCHAR (25),) GO / * Remplir la table d'employés avec des exemples de lignes * / INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) (500, 'John', 'Smith'), (501, 'Alex' , 'Admas'), (502, 'Eric', 'James'), (503, 'Shaun', 'Marsh') GO / * Créer une table employee_history avec la même structure que la table employee sans lignes * / IF OBJECT_ID ( 'EMPLOYEE_HISTORY') N'EST PAS NUL DROP TABLE EMPLOYEE_HISTORY GO SELECT * IN EMPLOYEE_HISTORY DE EMPLOYEE WHERE 1 = 0 - Ceci remplira la table Employee_history avec 0 ligne GO / * Voir les enregistrements de table des deux tables. Nous avons quatre lignes dans les deux tables * / SELECT * de EMPLOYEE e - 4 lignes SELECT * de EMPLOYEE_HISTORY eh - 0 lignes GO


Désormais, si un enregistrement supprimé de la table employee est supprimé, nous devons l’insérer dans la table employee_history pour référence future. Par conséquent, dans ce cas, nous allons créer un déclencheur AFTER DELETE.

/ * Après le déclencheur de suppression sur la table employee * / IF OBJECT_ID ('TRG_EmployeeHistory') N'EST PAS NUL DROP TRIGGER TRG_EmployeeHistory ALLEZ CREER TRIGGER TRG_EmployeeHistory ON db


Maintenant que nous avons un déclencheur AFTER DELETE sur la table employee, nous allons supprimer une ligne de la table employee pour voir le déclencheur au travail.

La ligne supprimée sera insérée dans la table employee_history.

/ * Supprimer un enregistrement de la table employee * / DELETE DE EMPLOYEE WHERE EMPID = 501 GO / * Notez les deux tables. L'enregistrement supprimé de l'employé est inséré dans EMPLOYEE_HISTORY * / SELECT * de EMPLOYEE e - 3 lignes SELECT * de EMPLOYEE_HISTORY eh - 1 ligne GO

le SUPPRIMÉ table est une table magique qui conserve les lignes supprimées. Dans le déclencheur AFTER DELETE, nous avons utilisé la table DELETED pour suivre les lignes supprimées. Ces lignes sont insérées dans la table EMPLOYEE_HISTORY.

Vous pouvez également passer par SQL Server: Codage du déclencheur après insertion.