Löschen oder Deaktivieren von DML-Triggern
In diesem Thema wird beschrieben, wie Sie einen DML-Trigger in SQL Server 2012 mithilfe von SQL Server Management Studio oder Transact-SQL löschen oder deaktivieren.
In diesem Thema
Vorbereitungen:
Empfehlungen
Sicherheit
Löschen oder Deaktivieren eines DML-Triggers mit:
SQL Server Management Studio
Transact-SQL
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.
[Top]
Verwendung von SQL Server Management Studio
So löschen Sie einen DML-Trigger
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von Database Engine (Datenbankmodul) her, und erweitern Sie dann diese Instanz.
Erweitern Sie die gewünschte Datenbank, Tabellen und dann die Tabelle, die den zu löschenden Trigger enthält.
Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu löschenden Trigger, und klicken Sie dann auf Löschen.
Ü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
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von Database Engine (Datenbankmodul) her, und erweitern Sie dann diese Instanz.
Erweitern Sie die gewünschte Datenbank, Tabellen und dann die Tabelle, die den zu deaktivierenden Trigger enthält.
Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu deaktivierenden Trigger, und klicken Sie dann auf Deaktivieren.
Um den Trigger zu aktivieren, klicken Sie auf Aktivieren.
[Top]
Verwendung von Transact-SQL
So löschen Sie einen DML-Trigger
Stellen Sie eine Verbindung mit dem Database Engine (Datenbankmodul) her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
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 AdventureWorks2012;
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 AdventureWorks2012;
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
Stellen Sie eine Verbindung mit dem Database Engine (Datenbankmodul) her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
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 AdventureWorks2012;
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 AdventureWorks2012;
GO
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
--Enable the trigger.
USE AdventureWorks2012;
GO
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
[Top]
Siehe auch
Verweis
DISABLE TRIGGER (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)