DROP TRIGGER (Transact-SQL)

Supprime un ou plusieurs déclencheurs DML ou DDL de la base de données active.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [schema_name.]trigger_name [ ,...n ] [ ; ]

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER trigger_name [ ,...n ] 
ON { DATABASE | ALL SERVER } 
[ ; ]

Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER trigger_name [ ,...n ] 
ON ALL SERVER 

Arguments

  • schema_name
    Nom du schéma auquel appartient un déclencheur DML. Les déclencheurs DML sont limités au schéma de la table ou à la vue sur laquelle ils sont créés. schema_name ne peut pas être spécifié pour des connexions DDL ou de connexion.

  • trigger_name
    Indique le nom du déclencheur à supprimer. Pour obtenir une liste des déclencheurs créés actuellement, utilisez sys.server_assembly_modules ou sys.server_triggers.

  • DATABASE
    Indique que l'étendue du déclencheur DDL s'applique à la base de données active. L'argument DATABASE doit être spécifié s'il a également été indiqué lors de la création ou de la modification du déclencheur.

  • ALL SERVER
    Indique que l'étendue du déclencheur DDL s'applique au serveur actif. L'argument ALL SERVER doit être spécifié s'il a également été indiqué lors de la création ou de la modification du déclencheur. ALL SERVER s'applique également aux déclencheurs de connexion.

Notes

Vous pouvez éliminer un déclencheur DML en le supprimant ou en supprimant sa table. Lorsqu'une table est supprimée, tous les déclencheurs associés sont également supprimés.

Lorsqu'un déclencheur est supprimé, les informations le concernant sont supprimées des affichages catalogue sys.objects, sys.triggers et sys.sql_modules.

Il est possible de supprimer plusieurs déclencheurs DDL avec une seule instruction DROP TRIGGER, uniquement s'ils ont tous été créés à l'aide de clauses ON identiques.

Pour renommer un déclencheur, utilisez DROP TRIGGER et CREATE TRIGGER. Pour modifier la définition d'un déclencheur, utilisez ALTER TRIGGER.

Pour plus d'informations sur la définition des dépendances d'un déclencheur spécifique, consultez sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) et sys.dm_sql_referencing_entities (Transact-SQL).

Pour plus d'informations sur l'affichage du texte d'un déclencheur, consultez sp_helptext (Transact-SQL) et sys.sql_modules (Transact-SQL).

Pour plus d'informations sur l'affichage de la liste des déclencheurs existants, consultez sys.triggers (Transact-SQL) et sys.server_triggers (Transact-SQL).

Autorisations

La suppression d'un déclencheur DML nécessite une autorisation ALTER sur la table ou la vue sur laquelle le déclencheur est défini.

La suppression d'un déclencheur DDL défini avec une étendue de serveur (ON ALL SERVER) ou d'un déclencheur de connexion nécessite l'autorisation CONTROL SERVER sur le serveur. La suppression d'un déclencheur DDL défini avec une étendue de base de données (ON DATABASE) nécessite une autorisation ALTER ANY DATABASE DDL TRIGGER sur la base de données active.

Exemples

A. Suppression d'un déclencheur DML

L'exemple suivant supprime le déclencheur employee_insupd.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
   DROP TRIGGER employee_insupd;
GO

B. Suppression d'un déclencheur DDL

L'exemple suivant supprime le déclencheur DDL safety.

Important

Étant donné que les déclencheurs DDL ne sont pas compris dans l'étendue du schéma, et qu'ils n'apparaissent donc pas dans l'affichage catalogue sys.objects, la fonction OBJECT_ID ne peut pas être utilisée pour déterminer s'ils existent dans la base de données. Les objets qui ne sont pas compris dans l'étendue du schéma doivent être interrogés à l'aide de l'affichage catalogue approprié. Pour les déclencheurs DDL, utilisez sys.triggers.

USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO