Dela via


Ändra eller byt namn på DML-utlösare

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

I den här artikeln beskrivs hur du ändrar eller byter namn på en DML-utlösare i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

Begränsningar

När du byter namn på en utlösare måste utlösaren finnas i den aktuella databasen och det nya namnet måste följa reglerna för identifierare.

Rekommendationer

Undvik att använda den sp_rename lagrade proceduren för att byta namn på en utlösare. Om du ändrar en del av ett objektnamn kan skript och lagrade procedurer brytas. Om du byter namn på en utlösare ändras inte namnet på motsvarande objektnamn i definitionskolumnen i sys.sql_modules katalogvyn. Vi rekommenderar att du släpper och återskapar utlösaren i stället.

Om du ändrar namnet på ett objekt som refereras till av en DML-utlösare måste du ändra utlösaren så att dess text återspeglar det nya namnet. Innan du byter namn på ett objekt ska du därför först visa objektets beroenden för att avgöra om den föreslagna ändringen påverkar utlösare.

En DML-utlösare kan också ändras för att kryptera dess definition.

Om du vill visa beroenden för en utlösare kan du använda SQL Server Management Studio eller följande funktions- och katalogvyer:

Behörigheter

För att ändra en DML-utlösare krävs ALTER behörighet i tabellen eller vyn där utlösaren definieras.

Använda SQL Server Management Studio

Ändra en DML-utlösare

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera den databas som du vill använda, expandera Tabelleroch expandera sedan tabellen som innehåller den utlösare som du vill ändra.

  3. Expandera Trigger, högerklicka på triggern för att ändra, och välj sedan Ändra.

  4. Ändra utlösaren och välj sedan Kör.

Byt namn på en DML-utlösare

  1. Ta bort eller inaktivera DML-utlösaren som du vill byta namn på.
  2. Skapa den nya DML-utlösarenoch ange det nya namnet.

Använd Transact-SQL

Ändra en utlösare med ALTER TRIGGER

  1. Anslut till databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågan. Kör det första exemplet för att skapa en DML-utlösare som skriver ut ett användardefinierat meddelande till klienten när en användare försöker lägga till eller ändra data i tabellen SalesPersonQuotaHistory. Kör instruktionen ALTER TRIGGER för att ändra utlösaren så att den endast utlöses på INSERT aktiviteter. Den här utlösaren är användbar eftersom den påminner användaren om att uppdatera eller infoga rader i den här tabellen samt att meddela Compensation-avdelningen.

    1. Skapa utlösare.

      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. Ändra utlösaren.

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

Byt namn på en utlösare med DROP TRIGGER och CREATE TRIGGER

  1. Anslut till databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör. I det här exemplet används DROP TRIGGER och CREATE TRIGGER-instruktioner för att byta namn på Sales.bonus_reminder utlösare till 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