Sdílet prostřednictvím


Úprava nebo přejmenování triggerů DML

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Tento článek popisuje, jak upravit nebo přejmenovat trigger DML v SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL.

Omezení

Při přejmenování triggeru musí být aktivační událost v aktuální databázi a nový název musí dodržovat pravidla pro identifikátory .

Doporučení

Nepoužívejte sp_rename uloženou proceduru k přejmenování triggeru. Změna jakékoli části názvu objektu může přerušit skripty a uložené procedury. Přejmenování triggeru nezmění název odpovídajícího názvu objektu ve sloupci definice sys.sql_modules zobrazení katalogu. Místo toho doporučujeme trigger vypustit a znovu vytvořit.

Pokud změníte název objektu odkazovaného triggerem DML, musíte aktivační událost upravit tak, aby jeho text odrážel nový název. Proto před přejmenování objektu zobrazte nejprve závislosti objektu, abyste zjistili, zda navrhovaná změna ovlivní všechny triggery.

Aktivační událost DML lze také upravit tak, aby šifrovala její definici.

Pokud chcete zobrazit závislosti triggeru, můžete použít SQL Server Management Studio nebo následující zobrazení funkce a katalogu:

Dovolení

Pokud chcete změnit trigger DML, vyžaduje ALTER oprávnění k tabulce nebo zobrazení, na kterém je aktivační událost definována.

Použití aplikace SQL Server Management Studio

Úprava triggeru DML

  1. V Průzkumníku objektůse připojte k instanci databázového stroje a poté tuto instanci rozbalte.

  2. Rozbalte požadovanou databázi, rozbalte Tabulkya potom rozbalte tabulku obsahující trigger, který chcete upravit.

  3. Rozbalte triggery, klikněte pravým tlačítkem myši na trigger, a potom vyberte Upravit.

  4. Upravte spouštěč a pak vyberte Spustit.

Přejmenování triggeru DML

  1. Odstranění nebo zakázání triggeru DML, který chcete přejmenovat.
  2. Vytvoření nového triggeru DML, zadejte nový název.

Použijte Transact-SQL

Úprava triggeru pomocí ALTER TRIGGERu

  1. Připojte se k databázovému stroji.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte následující příklad a vložte ho do dotazu. Spuštěním prvního příkladu vytvořte trigger DML, který vypíše uživatelem definovanou zprávu klientovi, když se uživatel pokusí přidat nebo změnit data v tabulce SalesPersonQuotaHistory. Spuštěním příkazu ALTER TRIGGER upravte trigger tak, aby se aktivoval pouze u INSERT aktivit. Tento trigger je užitečný, protože uživateli připomíná, aby při aktualizaci nebo vkládání řádků do této tabulky také informoval oddělení Compensation.

    1. Vytvoření triggeru

      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. Změňte spouštěč.

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

Přejmenujte trigger pomocí DROP TRIGGER a CREATE TRIGGER

  1. Připojte se k databázovému stroji.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit. Tento příklad používá DROP TRIGGER a CREATE TRIGGER příkazy k přejmenování triggeru Sales.bonus_reminder na 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