Freigeben über


Löschen oder Deaktivieren von DML-Triggern

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Dieses Thema beschreibt, wie Sie einen DML-Trigger in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL löschen oder deaktivieren.

In diesem Thema

Vorbereitungen

Empfehlungen

  • Wenn ein Trigger gelöscht wird, wird er aus der aktuellen Datenbank entfernt. Dies hat jedoch keine Auswirkung auf die Tabelle und Daten, auf denen der Trigger basiert. Durch das Löschen einer Tabelle werden automatisch alle Trigger für die Tabelle gelöscht.

  • Ein Trigger wird standardmäßig aktiviert, wenn er erstellt wird.

  • Durch das Deaktivieren wird ein Trigger nicht gelöscht. Der Trigger ist weiterhin als Objekt in der aktuellen Datenbank vorhanden. Ein deaktivierter Trigger wird jedoch nicht ausgelöst, wenn eine INSERT-, UPDATE- oder DELETE-Anweisung ausgeführt wird, für die er programmiert war. Deaktivierte Trigger können erneut aktiviert werden. Durch das Aktivieren eines Triggers wird dieser nicht neu erstellt. Der Trigger wird auf die gleiche Weise ausgelöst wie bei seiner ursprünglichen Erstellung.

Sicherheit

Berechtigungen

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

Zum Deaktivieren oder Aktivieren eines DML-Triggers muss ein Benutzer mindestens die ALTER-Berechtigung für die Tabelle oder Sicht besitzen, für die der Trigger erstellt wurde.

Verwendung von SQL Server Management Studio

So löschen Sie einen DML-Trigger

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, Tabellenund dann die Tabelle, die den zu löschenden Trigger enthält.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu löschenden Trigger, und klicken Sie anschließend auf Löschen.

  4. Überprüfen Sie im Dialogfeld Objekt löschen , ob der richtige Trigger ausgewählt ist, und klicken Sie dann auf OK.

So deaktivieren und aktivieren Sie einen DML-Trigger

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, Tabellenund dann die Tabelle, die den zu deaktivierenden Trigger enthält.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu deaktivierenden Trigger, und klicken Sie anschließend auf Deaktivieren.

  4. Um den Trigger zu aktivieren, klicken Sie auf Aktivieren.

Verwenden von Transact-SQL

So löschen Sie einen DML-Trigger

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in das Abfrage-Fenster ein. Führen Sie die CREATE TRIGGER -Anweisung aus, um den Sales.bonus_reminder -Trigger zu erstellen. Führen Sie die DROP TRIGGER -Anweisung aus, um den Trigger zu löschen.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Delete the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

So deaktivieren und aktivieren Sie einen DML-Trigger

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in das Abfrage-Fenster ein. Führen Sie die CREATE TRIGGER -Anweisung aus, um den Sales.bonus_reminder -Trigger zu erstellen. Führen Sie die DISABLE TRIGGER - und die ENABLE TRIGGER -Anweisungen aus, um den Trigger zu deaktivieren und zu aktivieren.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Disable the trigger.  
USE AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

Weitere Informationen

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP 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)