Freigeben über


DROP TRIGGER (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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 

Argumente

  • schema_name
    Ist der Name des Schemas, zu dem ein DML-Trigger gehört. Der Bereich von DML-Triggern bezieht sich auf das Schema der Tabelle oder Sicht, in der sie erstellt werden. schema_name kann nicht für DDL-Trigger oder LOGON-Trigger 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
    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.

Hinweise

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 Triggertextes finden Sie unter sp_helptext (Transact-SQL) und sys.sql_modules (Transact-SQL).

Weitere Informationen zum Anzeigen einer Liste vorhandener Trigger 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

Im folgenden Beispiel wird der Trigger employee_insupd gelöscht.

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

B. Löschen eines DDL-Triggers

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

Wichtiger HinweisWichtig

Da DDL-Trigger keine Schemas als Bereiche besitzen und deshalb nicht in der sys.objects-Katalogsicht angezeigt werden, kann die OBJECT_ID-Funktion nicht für Abfragen verwendet werden, 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.

USE AdventureWorks;
GO

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