Freigeben über


Ä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

  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 wählen Sie anschließend Ändern aus.

  4. Ändern Sie den Trigger, und wählen Sie dann Ausführen aus.

Umbenennen eines DML-Triggers

  1. Löschen oder deaktivieren Sie den DML-Trigger, den Sie umbenennen möchten.
  2. Erstellen Sie den neuen DML-Trigger, und geben Sie den neuen Namen an.

Verwenden von Transact-SQL

Ändern eines Triggers mit ALTER TRIGGER

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

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

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

    1. 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
      
    2. Ä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

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

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

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