Partager via


ENABLE TRIGGER (Transact-SQL)

Mis à jour : 12 décembre 2006

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

Icône Lien de rubriqueConventions de la syntaxe de 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. schema_name ne peut pas être spécifié pour les 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
    Pour un déclencheur DDL ou de connexion, indique que trigger_name a été créé ou modifié pour s'exécuter sur l'étendue du serveur.

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'un événement dans lequel il était initialement programmé est exécuté. Les déclencheurs sont désactivés à l'aide de DISABLE TRIGGER. Les déclencheurs DML définis sur des tables peuvent aussi être activés ou désactivés à l'aide de 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 ou d'un déclencheur de connexion défini avec une étendue de serveur (ON ALL SERVER) 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

A. 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, est désactivé puis activé.

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

B. Activation d'un déclencheur DDL

Dans l'exemple suivant, un déclencheur DDL nommé safety est créé dans l'étendue de la base de données, puis désactivé.

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
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 et de connexion créés dans l'étendue du serveur.

USE AdventureWorks;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO

Voir aussi

Référence

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

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Nouveau contenu :
  • Ajout d'informations tout au long de la rubrique sur les déclencheurs de connexion qui sont introduits dans SQL Server 2005 Service Pack 2.