Úprava nebo přejmenování triggerů DML
platí pro:SQL Server
Azure SQL Database
azure 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:
- sys.sql_expression_dependencies
- sys.dm_sql_referenced_entities
- sys.dm_sql_referencing_entities
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
V Průzkumníku objektůse připojte k instanci databázového stroje a poté tuto instanci rozbalte.
Rozbalte požadovanou databázi, rozbalte Tabulkya potom rozbalte tabulku obsahující trigger, který chcete upravit.
Rozbalte triggery, klikněte pravým tlačítkem myši na trigger, a potom vyberte Upravit.
Upravte spouštěč a pak vyberte Spustit.
Přejmenování triggeru DML
- Odstranění nebo zakázání triggeru DML, který chcete přejmenovat.
- Vytvoření nového triggeru DML, zadejte nový název.
Použijte Transact-SQL
Úprava triggeru pomocí ALTER TRIGGERu
Připojte se k databázovému stroji.
Na panelu Standard vyberte Nový dotaz.
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 uINSERT
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
.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
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
Připojte se k databázovému stroji.
Na panelu Standard vyberte Nový dotaz.
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
naSales.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
Související obsah
- CREATE TRIGGER (Transact-SQL)
- trigger DROP (Transact-SQL)
- Povolení triggeru (Transact-SQL)
- ZAKÁZAT TRIGGER (Transact-SQL)
- EVENTDATA (Transact-SQL)
- sp_rename (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- Získejte informace o triggerech DML
- 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)