Teilen über


Ändern oder Umbenennen von DML-Triggern

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie einen DML-Trigger in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL ändern oder umbenennen.

In diesem Thema

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 Bezeichnerentsprechen.

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.

  • Um die Abhängigkeiten eines Triggers anzuzeigen, können Sie SQL Server Management Studio oder die folgenden Funktions- und Katalogansichten verwenden:

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.

Verwendung von SQL Server Management Studio

So ändern 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 ändernden Trigger enthält.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den zu ändernden Trigger, und klicken Sie anschließend auf Ändern.

  4. Ändern Sie den Trigger, und klicken Sie dann auf Ausführen.

So benennen Sie einen DML-Trigger um

  1. Löschen Sie den Trigger , den Sie umbenennen möchten.

  2. Erstellen Sie den Trigger neu, und geben Sie dabei den neuen Namen an.

Verwenden von Transact-SQL

So ändern Sie einen Trigger mit ALTER 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 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 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  
  
USE AdventureWorks2022;  
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

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

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. 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_2umzubenennen.

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  
  

Weitere Informationen

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)