Ändra eller byt namn på DML-utlösare
gäller för:SQL Server
Azure SQL Database
Azure 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
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera den databas som du vill använda, expandera Tabelleroch expandera sedan tabellen som innehåller den utlösare som du vill ändra.
Expandera Trigger, högerklicka på triggern för att ändra, och välj sedan Ändra.
Ändra utlösaren och välj sedan Kör.
Byt namn på en DML-utlösare
- Ta bort eller inaktivera DML-utlösaren som du vill byta namn på.
- Skapa den nya DML-utlösarenoch ange det nya namnet.
Använd Transact-SQL
Ändra en utlösare med ALTER TRIGGER
Anslut till databasmotorn.
I standardfältet väljer du Ny fråga.
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 meddelaCompensation
-avdelningen.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
Ä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
Anslut till databasmotorn.
I standardfältet väljer du Ny fråga.
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 tillSales.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
Relaterat innehåll
- CREATE TRIGGER (Transact-SQL)
- DROP TRIGGER (Transact-SQL)
- ENABLE TRIGGER (Transact-SQL)
- INAKTIVERA UTLÖSARE (Transact-SQL)
- EVENTDATA (Transact-SQL)
- sp_rename (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- Hämta information om DML-trigger
- 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)