Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Den här artikeln beskriver hur man skapar en Transact-SQL Data Manipulation Language (DML)-trigger med SQL Server Management Studio, eller Transact-SQL-satsen CREATE TRIGGER .
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
Begränsningar
För en lista över begränsningar och restriktioner relaterade till att skapa DML-triggers, se CREATE TRIGGER.
Behörigheter
Kräver ALTER behörighet på tabellen eller vyn där triggern skapas.
Hur man skapar en DML-trigger
Du kan använda en av följande metoder:
Använda SQL Server Management Studio
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera databaser, expandera databasen
AdventureWorks2025, expandera tabeller och sedan expandera tabellenPurchasing.PurchaseOrderHeader.Högerklicka på Utlösareoch välj sedan Ny utlösare.
På menyn Query väljer du 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 PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Ta bort UPDATEochDELETEfrån listan.Välj OK.
I Frågeredigerarenersätter du kommentaren
-- Insert statements for trigger heremed 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;För att verifiera att syntaxen är giltig, välj Parsei frågemenyn. Om ett felmeddelande returneras, jämför satsen med föregående kodblock, korrigera vid behov och upprepa detta steg.
För att skapa DML-triggern, välj Kör frånFrågemenyn. 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änd Transact-SQL
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Från Filmenyn , välj Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och välj Kör. Detta exempel skapar samma lagrade DML-trigger som tidigare. Triggern gäller för flerrads- och enkelradsinsättningar, och är optimal för enkelradsinsättningar.
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;