Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
In dit artikel wordt beschreven hoe u een Transact-SQL DML-trigger (Data Manipulation Language) maakt met SQL Server Management Studio of de Transact-SQL-instructie CREATE TRIGGER .
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .
Beperkingen
Zie CREATE TRIGGER voor een lijst met beperkingen en beperkingen met betrekking tot het maken van DML-triggers.
Machtigingen
Hiervoor is machtiging vereist ALTER voor de tabel of weergave waarop de trigger wordt gemaakt.
Een DML-trigger maken
U kunt een van de volgende methoden gebruiken:
SQL Server Management Studio gebruiken
Maak in Objectverkennerverbinding met een exemplaar van Database Engine en breid dat exemplaar vervolgens uit.
Vouw Databases uit, vouw de
AdventureWorks2022database uit, vouw Tabellen uit en vouw vervolgens de tabelPurchasing.PurchaseOrderHeaderuit.Klik met de rechtermuisknop op Triggersen selecteer Nieuwe trigger.
Selecteer in het menu QuerySpecificeer waarden voor sjabloonparameters. U kunt ook op (Ctrl-Shift-M) drukken om het dialoogvenster Waarden opgeven voor sjabloonparameters te openen.
Voer in het dialoogvenster Waarden opgeven voor sjabloonparameters de volgende waarden in voor de weergegeven parameters.
Parameter Waarde maken uw naam Datum maken datum van vandaag Beschrijving Controleert de rating van de leverancier voordat een nieuwe inkooporder met de leverancier kan worden ingevoegd. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Verwijder UPDATEenDELETEuit de lijst.Kies OK.
Vervang in de Query-editorde opmerking
-- Insert statements for trigger heredoor de volgende instructie: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;Selecteer Parseren in het menu Query om te controleren of de syntaxis geldig is. Als er een foutbericht wordt geretourneerd, vergelijkt u de instructie met het vorige codeblok, corrigeert u deze indien nodig en herhaalt u deze stap.
Als u de DML-trigger wilt maken, selecteert u Uitvoeren in het menu Query. De DML-trigger wordt gemaakt als een object in de database.
Als u de DML-trigger in de Objectexplorer wilt zien, klikt u met de rechtermuisknop op Triggers en selecteert u Vernieuwen.
Gebruik Transact-SQL
Maak in Objectverkennerverbinding met een exemplaar van Database Engine en breid dat exemplaar vervolgens uit.
Selecteer Nieuwe query in het menu Bestand.
Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. In dit voorbeeld wordt dezelfde opgeslagen DML-trigger gemaakt als voorheen. De trigger is geldig voor invoegingen met meerdere rijen en één rij en is optimaal voor invoegingen van één rij.
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;