Ändern oder Umbenennen 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 umbenennen.
In diesem Thema
Vorbereitungen:
Einschränkungen
Empfehlungen
Sicherheit
Ändern oder Umbenennen eines DML-Triggers mit:
SQL Server Management Studio
Transact-SQL
Vorbereitungen
Einschränkungen
- Wenn Sie einen Trigger umbenennen, muss der Trigger in der aktuellen Datenbank vorhanden sein, und der neue Name muss den Regeln für Bezeichner entsprechen.
Empfehlungen
Es wird davon abgeraten, die gespeicherte Prozedur sp_rename zum Umbenennen eines Triggers zu verwenden. Wenn Sie Teile eines Objektnamens ändern, können Skripts und gespeicherte Prozeduren funktionsunfähig werden. Durch das Umbenennen eines Triggers wird der entsprechende Objektname in der definition-Spalte der sys.sql_modules-Katalogsicht nicht geändert. Es wird empfohlen, den Trigger stattdessen zu löschen und neu zu erstellen.
Wenn Sie den Namen eines Objekts ändern, auf das ein DML-Trigger verweist, müssen Sie den Trigger so ändern, dass sein Text den neuen Namen widerspiegelt. Bevor Sie ein Objekt umbenennen, sollten Sie daher erst die Abhängigkeiten des Objekts anzeigen, um feststellen zu können, ob Trigger von der beabsichtigten Änderung betroffen sind.
Sie können einen DML-Trigger auch ändern, um seine Definition zu verschlüsseln.
Sie können die Abhängigkeiten eines Triggers mithilfe von SQL Server Management Studio oder mit der folgenden Funktion und den Katalogsichten anzeigen:
Sicherheit
Berechtigungen
Zum Ändern eines DML-Triggers ist eine ALTER-Berechtigung für die Tabelle oder Sicht erforderlich, für die der Trigger definiert ist.
[Top]
Verwendung von SQL Server Management Studio
So ändern 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 ändernden Trigger enthält.
Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu ändernden Trigger, und klicken Sie anschließend auf Ändern.
Ändern Sie den Trigger, und klicken Sie dann auf Ausführen.
So benennen Sie einen DML-Trigger um
Löschen Sie den Trigger, den Sie umbenennen möchten.
Erstellen Sie den Trigger neu, und geben Sie dabei den neuen Namen an.
[Top]
Verwendung von Transact-SQL
So ändern Sie einen Trigger mit ALTER 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 Abfragefenster ein. Führen Sie das erste Beispiel aus, um einen DML-Trigger zu erstellen, der eine benutzerdefinierte Meldung an den Client ausgibt, wenn ein Benutzer versucht, Daten in der SalesPersonQuotaHistory-Tabelle hinzuzufügen oder zu ändern. Führen Sie die ALTER TRIGGER-Anweisung aus, um den Trigger so zu ändern, dass er nur bei INSERT-Aktivitäten ausgelöst wird. Dieser Trigger ist hilfreich, da er den Benutzer beim Aktualisieren oder Einfügen von Zeilen in die Tabelle daran erinnert, dass auch die Abteilung Compensation benachrichtigt werden muss.
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
USE AdventureWorks2012;
GO
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16, 10);
GO
So benennen Sie einen Trigger mit DROP TRIGGER und ALTER TRIGGER um
Stellen Sie eine Verbindung mit dem Database Engine (Datenbankmodul) her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. In diesem Beispiel werden die DROP TRIGGER- und ALTER TRIGGER-Anweisungen verwendet, um den Sales.bonus_reminder-Trigger in Sales.bonus_reminder_2 umzubenennen.
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_2
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
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)