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.
SQL Server lance une Déclencheur AFTER INSERT chaque fois qu'un événement d'instruction insert se produit.
Téléchargez le script AFTER INSERT TRIGGER utilisé ici avec des exemples pour pouvoir exécuter le script sur votre ordinateur SQL Server tout en suivant le problème ci-dessous.
Notre objectif est que, lorsqu'un enregistrement est inséré dans la table employee, nous souhaitons également que cet enregistrement soit inséré dans la table employee_backup. Notre exemple aura deux tables: employé et employee_backup. Nous allons créer ces tables et les renseigner avec des données.
/ * Vérifie si la table des employés existe déjà * / IF OBJECT_ID ('EMPLOYEE') N'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 et synchroniser la table employee_backup avec les enregistrements de la table employee afin que les deux tables aient le même records * / IF OBJECT_ID ('EMPLOYEE_BACKUP') N'EST PAS NUL DROP TABLE EMPLOYEE_BACKUP GO SELECT * IN EMPLOYEE_BACKUP DE EMPLOYEE GO / * Voir les enregistrements de table des deux tables. Nous avons quatre lignes dans les deux tables * / SELECT * de EMPLOYEE SELECT * de EMPLOYEE_BACKUP GO
Maintenant, nous devons garder les deux tables synchronisées de sorte que lorsqu'un enregistrement est inséré dans EMPLOYEE, il le soit automatiquement dans EMPLOYEE_BACKUP. Dans un tel cas, nous avons besoin d’un déclencheur AFTER INSERT.
Nous allons créer un Déclencheur AFTER INSERT sur la table des employés.
/ * Après insertion du déclencheur sur la table employee * / IF OBJECT_ID ('TRG_InsertSyncEmp') N'EST PAS NULL DROP TRIGGER TRG_InsertSyncEmp CREER TRIGGER TRG_InsertSyncEmp SUR dbo.EMPLOYEE APRES INSCRIRE COMME COMMENCER A COMMENCER PAR INGROULER
Notre déclencheur a été créé avec succès. Nous allons maintenant insérer un enregistrement dans la table employee et le même enregistrement dans la table employee_backup car nous avons créé un déclencheur AFTER INSERT sur la table employee.
le INSÉRÉtable est une table spéciale qui ne conserve que les lignes insérées; par conséquent, nous utilisons cette table INSERTED pour maintenir les deux tables synchronisées. Nous insérons les lignes de la table INSERTED, qui contient les instructions d'insertion effectuées sur la table employee dans la table employee_backup.
/ * Insère un enregistrement dans la table des employés. Un déclencheur d'insertion sera exécuté ici et le même enregistrement sera inséré dans la table employee_backup * / INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALEURS (504, 'Vish', 'Dalvi')
/ * Voir les deux tables sont synchronisées avec le même nombre d'enregistrements * / SELECT * de EMPLOYEE SELECT * de EMPLOYEE_BACKUP GO
Le déclencheur AFTER INSERT de la table EMPLOYEE, dès qu’il rencontre une instruction insert, appelle immédiatement une autre instruction insert pour insérer la même ligne dans la table EMPLOYEE_HISTORY.