Skapa DML-utlösare
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Det här avsnittet beskriver hur du skapar en Transact-SQL DML-utlösare med hjälp av SQL Server Management Studio och med hjälp av instruktionen Transact-SQL CREATE TRIGGER.
Innan du börjar
Begränsningar och restriktioner
En lista över begränsningar och begränsningar som rör skapande av DML-utlösare finns i CREATE TRIGGER (Transact-SQL).
Behörigheter
Kräver ALTER-behörighet i tabellen eller vyn där utlösaren skapas.
Skapa en DML-utlösare
Du kan använda något av följande:
Använda SQL Server Management Studio
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaser, expandera databasen
AdventureWorks2022
, expandera Tabeller och expandera sedan tabellen Purchasing.PurchaseOrderHeader.Högerklicka på Utlösareoch välj sedan Ny utlösare.
På menyn Query klickar du på Ange värden för mallparametrar. Du kan också trycka på (Ctrl-Shift-M) för att öppna dialogrutan Ange värden för mallparametrar.
I dialogrutan Ange värden för mallparametrar anger du följande värden för de parametrar som visas.
Parameter Värde Författare Ditt namn Skapa datum dagens datum Beskrivning Kontrollerar leverantörens kreditvärdighet innan du tillåter att en ny inköpsorder med leverantören infogas. Schema_Name Inköp Trigger_Name NewPODetail2 Tabell_Namn inköpsorderdetalj Datamodifikationsuttalande Ta bort UPDATE och DELETE från listan. Klicka på OK.
I Frågeredigerarenersätter du kommentaren
-- Insert statements for trigger here
med följande instruktion:IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;
Kontrollera att syntaxen är giltig genom att klicka på Parsapå menyn Query . Om ett felmeddelande returneras, jämför du instruktionen med informationen ovan, korrigerar vid behov och upprepar sedan steget.
Om du vill skapa DML-utlösaren klickar du på Körpå menyn Query . DML-utlösaren skapas som ett objekt i databasen.
Om du vill se DML-utlösaren i Object Explorer högerklickar du på Utlösare och väljer Uppdatera.
Använda Transact-SQL
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
På menyn Arkiv klickar du på Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och klicka på Kör. I det här exemplet skapas samma lagrade DML-utlösare som ovan.
-- Trigger valid for multirow and single row inserts -- and optimal for single row inserts. USE AdventureWorks2022; GO CREATE TRIGGER NewPODetail3 ON Purchasing.PurchaseOrderDetail FOR INSERT AS IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;