DISABLE TRIGGER (Transact-…SQL)

  • 05/10/2017
  • 2 minutes de lecture
    • W
    • c
    • .

    • r
    • i
    • M
    • +7

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database

Désactive un déclencheur.

Conventions de la syntaxe Transact-SQL

Syntaxe

DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER } 

Note

Pour visualiser la syntaxe Transact-SQL pour SQL Server 2014 et les versions antérieures, consultez la documentation des versions précédentes.

Arguments

schema_name
C’est le nom du schéma auquel le déclencheur appartient. Schema_name ne peut pas être spécifié pour les déclencheurs DDL ou de connexion.

trigger_name
Est le nom du déclencheur à désactiver.

ALL
Indique que tous les déclencheurs définis à la portée de la clause ON sont désactivés.

Attention

SQL Server crée des déclencheurs dans les bases de données qui sont publiées pour la réplication par fusion. La spécification de ALL dans les bases de données publiées désactive ces déclencheurs, ce qui perturbe la réplication. Vérifiez que la base de données actuelle n’est pas publiée pour la réplication par fusion avant de spécifier ALL.

nom_objet
C’est le nom de la table ou de la vue sur laquelle le déclencheur DML nom_trigger a été créé pour s’exécuter.

DATABASE
Pour un déclencheur DDL, indique que nom_trigger a été créé ou modifié pour s’exécuter avec la portée de la base de données.

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

Pour un déclencheur DDL, indique que trigger_name a été créé ou modifié pour s’exécuter avec la portée du serveur. ALL SERVER s’applique également aux déclencheurs de connexion.

Note

Cette option n’est pas disponible dans une base de données contenue.

Remarques

Les déclencheurs sont activés par défaut lorsqu’ils sont créés. La désactivation d’un déclencheur ne l’abandonne pas. Le déclencheur existe toujours en tant qu’objet dans la base de données actuelle. Cependant, le déclencheur ne se déclenche pas lorsque les instructions Transact-SQL sur lesquelles il a été programmé sont exécutées. Les déclencheurs peuvent être réactivés en utilisant ENABLE TRIGGER. Les déclencheurs DML définis sur les tables peuvent également être désactivés ou activés en utilisant ALTER TABLE.

Changer le déclencheur en utilisant l’instruction ALTER TRIGGER active le déclencheur.

Permissions

Pour désactiver un déclencheur DML, au minimum, un utilisateur doit avoir la permission ALTER sur la table ou la vue sur laquelle le déclencheur a été créé.

Pour désactiver un déclencheur DDL avec une portée de serveur (ON ALL SERVER) ou un déclencheur de connexion, un utilisateur doit avoir la permission CONTROL SERVER sur le serveur. Pour désactiver un déclencheur DDL avec une portée de base de données (ON DATABASE), au minimum, un utilisateur doit avoir la permission ALTER ANY DATABASE DDL TRIGGER dans la base de données actuelle.

Exemples

Les exemples suivants sont décrits dans la base de données AdventureWorks2012.

A. Désactiver un déclencheur DML sur une table

L’exemple suivant désactive le déclencheur uAddress qui a été créé sur la table Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Désactiver un déclencheur DDL

L’exemple suivant crée un déclencheur DDL safety avec une portée de base de données, puis le désactive.

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 

C. Désactiver tous les déclencheurs qui ont été définis avec la même portée

L’exemple suivant désactive tous les déclencheurs DDL qui ont été créés à la portée du serveur.

DISABLE Trigger ALL ON ALL SERVER; GO 

See Also

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.