Ändern oder Umbenennen von DML-Triggern
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
In diesem Artikel wird beschrieben, wie Sie einen DML-Trigger in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL ändern oder umbenennen können.
Begrenzungen
Wenn Sie einen Trigger umbenennen, muss der Trigger in der aktuellen Datenbank vorhanden sein, und der neue Name muss den Regeln für Bezeichnerentsprechen.
Empfehlungen
Verzichten Sie beim Umbenennen eines Triggers auf die gespeicherte Prozedur sp_rename. 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 Definitionsspalte der Katalogsicht sys.sql_modules 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, ob sich die beabsichtigte Änderung auf Trigger auswirkt.
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:
Berechtigungen
Zum Ändern eines DML-Triggers ist die Berechtigung ALTER
für die Tabelle oder Ansicht erforderlich, für die der Trigger definiert ist.
Verwenden von SQL Server Management Studio
Ändern eines DML-Triggers
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.
Erweitern Sie die gewünschte Datenbank, Tabellenund 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 wählen Sie anschließend Ändern aus.
Ändern Sie den Trigger, und wählen Sie dann Ausführen aus.
Umbenennen eines DML-Triggers
- Löschen oder deaktivieren Sie den DML-Trigger, den Sie umbenennen möchten.
- Erstellen Sie den neuen DML-Trigger, und geben Sie den neuen Namen an.
Verwenden von Transact-SQL
Ändern eines Triggers mit ALTER TRIGGER
Stellen Sie eine Verbindung mit dem Datenbank-Engineher.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, und fügen Sie es 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 beiINSERT
-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 AbteilungCompensation
benachrichtigt werden muss.Erstellen Sie einen Auslöser.
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
Ändern Sie den Trigger.
USE AdventureWorks2022; GO ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR ('Notify Compensation', 16, 10); GO
Umbenennen eines Triggers mit DROP TRIGGER und ALTER TRIGGER
Stellen Sie eine Verbindung mit dem Datenbank-Engineher.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel werden die Anweisungen DROP TRIGGER und ALTER TRIGGER verwendet, um den Trigger
Sales.bonus_reminder
inSales.bonus_reminder_2
umzubenennen.
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_2
ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
Zugehöriger Inhalt
- CREATE TRIGGER (Transact-SQL)
- DROP TRIGGER (Transact-SQL)
- ENABLE TRIGGER (Transact-SQL)
- DISABLE TRIGGER (Transact-SQL)
- EVENTDATA (Transact-SQL)
- sp_rename (Transact-SQL)
- ALTER TRIGGER (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)