Partager via


DROP TRIGGER (Transact-SQL)

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

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

Conventions de la syntaxe Transact-SQL

Syntaxe

-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)  
  
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]  
  
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON { DATABASE | ALL SERVER }   
[ ; ]  
  
-- Trigger on a LOGON event (Logon Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON ALL SERVER  

Arguments

IF EXISTS
S’applique à : SQL Server (SQL Server 2016 (13.x) jusqu’à la version actuelle, SQL Database).

Supprime, de manière conditionnelle, le déclencheur uniquement s’il existe déjà.

schema_name
Nom du schéma auquel appartient le déclencheur DML. La portée des déclencheurs DML se limite au schéma de la table ou de la vue sur laquelle ils sont créés. Vous ne pouvez pas spécifier schema_name pour des déclencheurs 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
S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures.

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

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

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.

Quand un déclencheur est supprimé, les informations le concernant sont supprimées des vues de 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étermination 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 du déclencheur, consultez sp_helptext (Transact-SQL) et sys.sql_modules (Transact-SQL).

Pour plus d’informations sur l’affichage d’une 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

R. Suppression d'un déclencheur DML

L’exemple suivant supprime le déclencheur employee_insupd de la base de données AdventureWorks2022. (Depuis SQL Server 2016 (13.x), vous pouvez utiliser la syntaxe DROP TRIGGER IF EXISTS.)

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

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 la vue de 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.

DROP TRIGGER safety  
ON DATABASE;  

Voir aussi

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Obtenir des informations sur les déclencheurs DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)