Déclencheurs DDL et déclencheurs DML

Les déclencheurs DDL et les déclencheurs DML sont utilisés dans des buts différents.

Les déclencheurs DML sont associés aux instructions INSERT, UPDATE et DELETE et contribuent à l'application de règles métier et à l'intégrité des données lorsque le contenu de tables ou de vues est modifié.

Les déclencheurs DDL fonctionnent sur les instructions CREATE, ALTER, DROP et autres instructions DDL et procédures stockées qui effectuent des opérations de type DDL. Ils sont utilisés pour exécuter des tâches administratives et appliquer des règles métier qui concernent les bases de données. Ils s'appliquent à toutes les commandes d'un même type dans une base de données, ou sur un serveur.

Les déclencheurs DML et les déclencheurs DDL sont créés, modifiés et supprimés au moyen d'une syntaxe Transact-SQL similaire et partagent plusieurs traits de comportement.

Tout comme les déclencheurs DML, les déclencheurs DDL peuvent exécuter du code managé empaqueté dans un assembly créé dans le Microsoft .NET Framework et téléchargé dans SQL Server. Pour plus d'informations, consultez Programmation de déclencheurs CLR.

De même, plusieurs déclencheurs DDL peuvent être créés sur la même instruction Transact-SQL. Un déclencheur DDL et l'instruction qu'il lance sont aussi exécutés au sein de la même transaction. Cette transaction peut être restaurée depuis le déclencheur. Certaines erreurs graves peuvent entraîner la restauration automatique d'une transaction toute entière. Les déclencheurs DDL qui sont exécutés à partir d'un traitement et incluent explicitement l'instruction ROLLBACK TRANSACTION annulent le traitement tout entier. Pour plus d'informations, consultez Utilisation de déclencheurs DML contenant des instructions COMMIT ou ROLLBACK TRANSACTION.

Notes

Un événement ALTER DATABASE qui se produit à l'intérieur du corps d'un déclencheur DDL ne peut pas être annulé.

Tout comme les déclencheurs DML, les déclencheurs DDL peuvent être imbriqués. Pour plus d'informations, consultez Déclencheurs imbriqués.

Avant de créer des déclencheurs DDL, prenez connaissance des différences suivantes :

  • Les déclencheurs DDL ne s'exécutent qu'après la fin d'une instruction Transact-SQL. Les déclencheurs DDL ne peuvent pas être utilisés comme déclencheurs INSTEAD OF.

  • Les déclencheurs DDL ne créent pas les tables inserted et deleted. Les informations sur un événement déclenché par un déclencheur DDL, ainsi que les modifications qui s'ensuivent, sont capturées au moyen de la fonction EVENTDATA. Pour plus d'informations, consultez Utilisation de la fonction EVENTDATA.

Voir aussi

Concepts