Description des déclencheurs DDL
Comme les autres déclencheurs, les déclencheurs DDL lancent des procédures stockées en réponse à un événement. À la différence des déclencheurs DML, ils ne réagissent pas aux instructions UPDATE, INSERT et DELETE appliquées à une table ou à une vue. Ils sont en revanche réactifs à beaucoup d'événements DDL (Data Definition Language). Ces événements correspondent principalement à des instructions Transact-SQL qui commencent par les mots clés CREATE, ALTER et DROP. Certaines procédures stockées système qui effectuent des opérations de type DDL peuvent également activer des déclencheurs DDL.
Important
Testez vos déclencheurs DDL afin de déterminer leurs réponses aux procédures stockées système qui sont exécutées. Par exemple, l'instruction CREATE TYPE et la procédure stockée sp_addtype activeront toutes deux un déclencheur DDL créé sur un événement CREATE_TYPE. .
Les déclencheurs DDL peuvent être utilisés dans des tâches d'administration telles que l'audit et la régulation d'opérations de base de données.
Utilisez des déclencheurs DDL dans les cas suivants :
Vous voulez empêcher certaines modifications sur votre schéma de base de données.
Vous voulez qu'un événement se produise dans la base de données en réponse à une modification du schéma.
Vous voulez enregistrer des modifications ou des événements dans le schéma de la base de données.
Les déclencheurs DDL ne s'activent qu'après l'exécution des instructions DDL de déclenchement. Les déclencheurs DDL ne peuvent pas être utilisés comme déclencheurs INSTEAD OF.
L'exemple suivant illustre l'utilisation d'un déclencheur DDL qui empêche la modification et la suppression de toutes les tables d'une base de données.
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK ;
Les déclencheurs DDL peuvent être activés en réponse à un événement Transact-SQL traité dans la base de données actuelle ou sur le serveur actuel. La portée du déclencheur dépend de l'événement qui l'active. Pour plus d'informations sur la portée d'un déclencheur DDL, consultez Conception des déclencheurs DDL.
Pour obtenir un exemple de déclencheur DDL disponible dans l'exemple de base de données AdventureWorks, dans l'Explorateur d'objets de SQL Server Management Studio, ouvrez le dossier Déclencheurs de base de données qui se trouve dans le dossier Programmabilité de la base de données AdventureWorks. Cliquez avec le bouton droit sur ddlDatabaseTriggerLog et sélectionnez Générer un script du déclencheur de la base de données en tant que. Par défaut, le déclencheur DDL ddlDatabaseTriggerLog est désactivé.