Partager via


ENABLE TRIGGER (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Active un déclencheur DML, DDL ou de connexion.

Conventions de la syntaxe Transact-SQL

Syntaxe

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }  
ON { object_name | DATABASE | ALL SERVER } [ ; ]  

Arguments

schema_name
Nom du schéma auquel appartient le déclencheur. Vous ne pouvez pas spécifier schema_name pour des déclencheurs DDL ou de connexion.

trigger_name
Nom du déclencheur à activer.

ALL
Indique que tous les déclencheurs définis dans l'étendue de la clause ON sont activés.

object_name
Nom de la table ou de la vue sur laquelle le déclencheur DML trigger_name a été créé pour s’exécuter.

DATABASE
Pour un déclencheur DDL, indique que trigger_name a été créé ou modifié pour s’exécuter sur l’étendue de la base de données.

ALL SERVER
S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures.

Pour un déclencheur DDL, indique que trigger_name a été créé ou modifié pour s’exécuter sur l’étendue du serveur. ALL SERVER s'applique également aux déclencheurs de connexion.

Notes

Cette option n'est pas disponible dans une base de données autonome.

Notes

Un déclencheur n'est pas recréé par son activation. Un déclencheur désactivé continue d'exister en tant qu'objet de la base de données active, mais il ne s'exécute pas. Une fois activé, un déclencheur s'exécute dès lors qu'une instruction Transact-SQL dans laquelle il était initialement programmé est exécuté. Les déclencheurs sont désactivés à l’aide de DISABLE TRIGGER. Il est également possible d’activer ou de désactiver les déclencheurs DML définis sur des tables au moyen de la commande ALTER TABLE.

Autorisations

Pour activer un déclencheur DML, un utilisateur doit disposer au minimum d'une autorisation ALTER sur la table ou sur la vue sur laquelle le déclencheur a été créé.

L'activation d'un déclencheur DDL avec une étendue de serveur (ON ALL SERVER) ou d'un déclencheur de connexion défini nécessite l'autorisation CONTROL SERVER sur le serveur. Pour activer un déclencheur DDL dans l'étendue de la base de données (ON DATABASE), un utilisateur doit au minimum disposer d'une autorisation ALTER ANY DATABASE DDL TRIGGER dans la base de données active.

Exemples

R. Activation d'un déclencheur DML sur une table

Dans l’exemple suivant, le déclencheur uAddress, qui a été créé sur la table Address dans la base de données AdventureWorks, est désactivé puis activé.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE Trigger Person.uAddress ON Person.Address;  
GO  

B. Activation d'un déclencheur DDL

L’exemple suivant crée un déclencheur DDL safety sur l’étendue de la base de données, puis le désactive et l’active.

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'You must disable Trigger "safety" to drop or alter tables!'   
   ROLLBACK;  
GO  
DISABLE TRIGGER safety ON DATABASE;  
GO  
ENABLE TRIGGER safety ON DATABASE;  
GO  

C. Activation de tous les déclencheurs définis dans la même étendue

L'exemple suivant montre l'activation de tous les déclencheurs DDL créés dans l'étendue du serveur.

S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures.

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Voir aussi

DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)