Recherche…


Introduction

Un déclencheur est un type spécial de procédure stockée, qui est exécuté automatiquement après qu'un événement se soit produit. Il existe deux types de déclencheurs: les déclencheurs de langage de définition de données et les déclencheurs de langage de manipulation de données.

Il est généralement lié à une table et se déclenche automatiquement. Vous ne pouvez pas appeler explicitement un déclencheur.

Types et classifications du déclencheur

Dans SQL Server, il existe deux catégories de déclencheurs: les déclencheurs DDL et les déclencheurs DML.

Les déclencheurs DDL sont déclenchés en réponse aux événements DDL (Data Definition Language). Ces événements correspondent principalement aux instructions Transact-SQL qui commencent par les mots-clés CREATE , ALTER et DROP .

Les déclencheurs DML sont déclenchés en réponse aux événements DML (Data Manipulation Language). Ces événements correspondent aux instructions Transact-SQL qui commencent par les mots-clés INSERT , UPDATE et DELETE .

Les déclencheurs DML sont classés en deux types principaux:

  1. Après les déclencheurs (pour les déclencheurs)

    • APRÈS INSÉRER Déclencheur.
    • AFTER UPDATE Trigger.
    • APRÈS SUPPRIMER Déclencheur.
  2. Au lieu de déclencheurs

    • INSTEAD OF INSERT Trigger.
    • AU LIEU DE MISE À JOUR Déclencheur.
    • AU LIEU DE SUPPRIMER Déclencheur.

Déclencheurs DML

Les déclencheurs DML sont déclenchés en réponse aux instructions dml ( insert , update ou delete ).
Un déclencheur dml peut être créé pour traiter un ou plusieurs événements dml pour une seule table ou vue. Cela signifie qu'un seul déclencheur dml peut gérer l'insertion, la mise à jour et la suppression d'enregistrements dans une table ou une vue spécifique, mais ne peut gérer que les données modifiées sur cette seule table ou vue.

Les déclencheurs DML donnent accès aux tables inserted et deleted qui contiennent des informations sur les données qui ont été / seront affectées par l'instruction d'insertion, de mise à jour ou de suppression qui a déclenché le déclencheur.

Notez que les déclencheurs DML sont basés sur des instructions et non sur des lignes. Cela signifie que si l'instruction a effectué plus d'une ligne, les tables insérées ou supprimées contiendront plus d'une ligne.

Exemples:

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR INSERT
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Inserted'
    FROM Inserted

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR UPDATE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Updated'
    FROM Inserted 

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR DELETE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Deleted'
    FROM Deleted

GO

Tous les exemples ci-dessus ajoutent des enregistrements à tblAudit chaque fois qu'un enregistrement est ajouté, supprimé ou mis à jour dans tblSomething.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow