DROP TRIGGER (Transact-SQL)

Gilt für:yesSQL Server (alle unterstützten Versionen) YesAzure SQL-DatenbankYesAzure SQL Managed Instance

Entfernt einen oder mehrere DML- oder DDL-Trigger aus der aktuellen Datenbank.

ThemenlinksymbolTransact-SQL-Syntaxkonventionen

Syntax

-- 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  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

IF EXISTS
Gilt für: SQL Server (SQL Server 2016 (13.x) bis zur aktuellen Version, SQL-Datenbank)

Entfernt den Trigger nur, wenn dieser bereits vorhanden ist.

schema_name
Der Name des Schemas, zu dem ein DML-Trigger gehört. DML-Trigger werden auf das Schema der Tabelle oder der Sicht begrenzt, in denen sie erstellt werden. schema_name kann für DDL- oder LOGON-Trigger nicht angegeben werden.

trigger_name
Ist der Name des zu entfernenden Triggers. Um eine Liste von gerade erstellten Triggern anzuzeigen, verwenden Sie sys.server_assembly_modules oder sys.server_triggers.

DATABASE
Gibt den Bereich des DDL-Triggers für die aktuelle Datenbank an. DATABASE muss angegeben werden, wenn es auch beim Erstellen oder Ändern des Triggers angegeben wurde.

ALL SERVER
Gilt für: SQL Server 2008 und höher.

Gibt den Bereich des DDL-Triggers für den aktuellen Server an. ALL SERVER muss angegeben werden, wenn es auch beim Erstellen oder Ändern des Triggers angegeben wurde. ALL SERVER gilt auch für LOGON-Trigger.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

Bemerkungen

Sie können einen DML-Trigger entfernen, indem Sie ihn löschen oder die Triggertabelle löschen. Beim Löschen einer Tabelle werden auch alle zugeordneten Trigger gelöscht.

Wird ein Trigger gelöscht, werden die Informationen zum Trigger aus den Katalogsichten sys.objects, sys.triggers und sys.sql_modules entfernt.

Mehrere DDL-Trigger können nur über die DROP TRIGGER-Anweisung gelöscht werden, wenn alle Trigger mithilfe identischer ON-Klauseln erstellt wurden.

Verwenden Sie DROP TRIGGER und CREATE TRIGGER, um einen Trigger umzubenennen. Wenn Sie die Definition eines Triggers ändern möchten, verwenden Sie ALTER TRIGGER.

Weitere Informationen zum Bestimmen von Abhängigkeiten für einen bestimmten Trigger finden Sie unter sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) und sys.dm_sql_referencing_entities (Transact-SQL).

Weitere Informationen zum Anzeigen des Texts des Triggers finden Sie unter sp_helptext (Transact-SQL) und sys.sql_modules (Transact-SQL).

Weitere Informationen zum Anzeigen einer Liste mit bereits vorhandenen Triggern finden Sie unter sys.triggers (Transact-SQL) und sys.server_triggers (Transact-SQL).

Berechtigungen

Zum Löschen eines DML-Triggers ist die ALTER-Berechtigung für die Tabelle oder Sicht erforderlich, in der der Trigger definiert wurde.

Zum Löschen eines DDL-Triggers, der mit einem Serverbereich (ON ALL SERVER) definiert ist, oder eines LOGON-Triggers ist die CONTROL SERVER-Berechtigung auf dem Server erforderlich. Um einen mit einem Datenbankbereich definierten DDL-Trigger (ON DATABASE) zu löschen, ist die ALTER ANY DATABASE DDL TRIGGER-Berechtigung in der aktuellen Datenbank erforderlich.

Beispiele

A. Löschen eines DML-Triggers

Das folgende Beispiel löscht den employee_insupd-Trigger in der AdventureWorks2012-Datenbank. (Ab SQL Server 2016 (13.x) können Sie die DROP TRIGGER IF EXISTS-Syntax verwenden.)

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

B. Löschen eines DDL-Triggers

Im folgenden Beispiel wird der DDL-Trigger safety gelöscht.

Wichtig

Da DDL-Trigger nicht schemabezogen sind und deshalb nicht in der sys.objects-Katalogsicht angezeigt werden, kann die OBJECT_ID-Funktion nicht für Abfragen verwendet werden, über die festgestellt werden soll, ob DDL-Trigger in der Datenbank vorhanden sind. Objekte, die keine Bereiche als Schemas besitzen, müssen mithilfe der entsprechenden Katalogsicht abgerufen werden. Für DDL-Trigger verwenden Sie sys.triggers.

DROP TRIGGER safety  
ON DATABASE;  

Siehe auch

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Abrufen von Informationen zu DML-Triggern
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)