Présentation des déclencheurs DML
Microsoft SQL Server offre deux mécanismes principaux pour assurer l'application des règles métier et maintenir l'intégrité des données : les contraintes et les déclencheurs. Un déclencheur est un type spécial de procédure stockée qui est automatiquement invoqué lorsqu'un événement de langage s'exécute. SQL Server intègre trois types généraux de déclencheurs : les déclencheurs DML, les déclencheurs DDL et les déclencheurs de connexion.
Les déclencheurs DDL sont appelés lorsqu'un événement de langage de définition de données (DDL, ou Data Definition Language) se produit dans le serveur ou la base de données. Ceux-ci sont décrits plus en détail dans la rubrique Déclencheurs DDL. Les déclencheurs de connexion lancent des procédures stockées en réponse à un événement LOGON. Cet événement est déclenché lorsqu'une session utilisateur est établie avec une instance de SQL Server. Pour plus d'informations, consultez Déclencheurs de connexion.
Les déclencheurs DML sont appelés lorsqu'un événement de langage de manipulation de données (DML, ou Data Manipulation Language) se produit dans la base de données. Les événements DML incluent des instructions INSERT, UPDATE ou DELETE qui permettent la modification de données dans une table ou une vue spécifiée. Un déclencheur DML peut interroger d'autres tables et peut inclure des instructions Transact-SQL complexes. Le déclencheur et l'instruction qui le déclenche, sont traités comme une unique transaction qui peut être annulée (par une opération de restauration) à partir du déclencheur. Si une erreur grave est détectée (par exemple un espace disque insuffisant), toute la transaction est automatiquement annulée.
Les déclencheurs DML sont utiles dans les cas suivants :
Ils peuvent effectuer des modifications en cascade dans des tables associées de la base de données, mais ces modifications peuvent être exécutées plus efficacement par le biais de contraintes d'intégrité référentielle en cascade.
Ils peuvent empêcher les opérations INSERT, UPDATE et DELETE incorrectes et assurer l'application d'autres restrictions plus complexes que celles définies à l'aide de contraintes CHECK.
Contrairement aux contraintes CHECK, les déclencheurs DML peuvent faire référence à des colonnes d'autres tables. Par exemple, un déclencheur peut utiliser une instruction SELECT à partir d'une autre table afin de comparer avec les données insérées ou mises à jour et d'effectuer des actions supplémentaires, comme modifier les données ou afficher un message d'erreur défini par l'utilisateur.
Ils peuvent déterminer l'état d'une table avant et après une modification de données, et entreprendre des actions en fonction de cette différence d'état.
Plusieurs déclencheurs DML du même type (INSERT, UPDATE ou DELETE) sur une table permettent que plusieurs actions différentes soient réalisées en réponse à la même instruction de modification.