Megosztás a következőn keresztül:


DML-eseményindítók módosítása vagy átnevezése

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk bemutatja, hogyan módosíthatja vagy nevezheti át a DML-eseményindítót az SQL Server Management Studio vagy a Transact-SQL használatával az SQL Serverben.

Korlátozások

Eseményindító átnevezésekor az eseményindítónak az aktuális adatbázisban kell lennie, és az új névnek követnie kell azonosítókszabályait.

Ajánlások

Ne használja a sp_rename tárolt eljárást az eseményindító átnevezéséhez. Az objektumnév bármely részének módosítása megszakíthatja a szkripteket és a tárolt eljárásokat. Az eseményindító átnevezése nem módosítja a megfelelő objektum nevét a sys.sql_modules katalógusnézet definícióoszlopában. Javasoljuk, hogy inkább törölje és hozza létre újra a trigger.

Ha módosítja egy DML-eseményindító által hivatkozott objektum nevét, módosítania kell az eseményindítót, hogy a szöveg tükrözze az új nevet. Ezért mielőtt átnevez egy objektumot, először jelenítse meg az objektum függőségeit annak megállapításához, hogy a javasolt módosítás hatással van-e az eseményindítókra.

A DML-eseményindítók a definíció titkosításához is módosíthatók.

Az eseményindító függőségeinek megtekintéséhez használhatja az SQL Server Management Studiót, vagy az alábbi függvény- és katalógusnézeteket:

Engedélyek

A DML-eseményindító módosításához ALTER engedélyre van szükség azon a táblán vagy nézeten, amelyen az eseményindító definiálva van.

Az SQL Server Management Studio használata

DML-eseményindító módosítása

  1. Az Object Explorer-ben csatlakozzon az adatbázis-motor egy példányához, majd bontsa ki az adott példányt.

  2. Bontsa ki a kívánt adatbázist, bontsa ki Táblák, majd bontsa ki a módosítani kívánt eseményindítót tartalmazó táblát.

  3. Nyissa meg eseményindítók, kattintson jobb gombbal a módosítandó eseményindítóra, majd válassza a Módosítás lehetőséget.

  4. Módosítsa az eseményindítót, majd válassza Végrehajtáslehetőséget.

DML-eseményindító átnevezése

  1. Az átnevezni kívánt DML-eseményindító törlése vagy letiltása.
  2. Hozza létre az új DML-eseményindítót, és adja meg az új nevet.

Transact-SQL használata

Eseményindító módosítása az ALTER TRIGGER használatával

  1. Csatlakozzon az adatbázismotorhoz.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezésbe. Hajtsa végre az első példát egy olyan DML-eseményindító létrehozásához, amely egy felhasználó által megadott üzenetet nyomtat ki az ügyfélnek, amikor egy felhasználó adatokat próbál hozzáadni vagy módosítani a SalesPersonQuotaHistory táblában. Hajtsa végre a ALTER TRIGGER utasítást a trigger módosításához, hogy az csak INSERT tevékenységekre aktiválódjon. Ez az eseményindító azért hasznos, mert emlékezteti a felhasználót arra, hogy frissíti vagy beszúrja a sorokat ebbe a táblába, hogy a Compensation részleget is értesítse.

    1. Eseményindító létrehozása.

      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. Módosítsa az eseményindítót.

      USE AdventureWorks2022;
      GO
      ALTER TRIGGER Sales.bonus_reminder
      ON Sales.SalesPersonQuotaHistory
      AFTER INSERT
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      

Eseményindító átnevezése DROP TRIGGER és CREATE TRIGGER használatával

  1. Csatlakozzon az adatbázismotorhoz.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget. Ez a példa a DROP TRIGGER és CREATE TRIGGER utasítások használatával nevezi át a Sales.bonus_reminder eseményindítót Sales.bonus_reminder_2.

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