Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez a cikk azt ismerteti, hogyan hozhat létre Transact-SQL Adatkezelési nyelv (DML) eseményindítót az SQL Server Management Studióval vagy a Transact-SQL CREATE TRIGGER utasítással.
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
Korlátozások
A DML-eseményindítók létrehozásával kapcsolatos korlátozások és korlátozások listáját a CREATE TRIGGER című témakörben találja.
Engedélyek
Engedélyre van szükség ALTER azon a táblán vagy nézeten, amelyen az eseményindító létrejön.
DML-eseményindító létrehozása
Az alábbi módszereket használhatja:
Az SQL Server Management Studio használata
Object Explorer-ben csatlakozzon az Adatbázis-motor egy példányához, majd bontsa ki azt.
Bontsa ki az Adatbázisok elemet, bontsa ki az adatbázist
AdventureWorks2025, bontsa ki a Táblák elemet, majd bontsa ki a táblátPurchasing.PurchaseOrderHeader.Kattintson a jobb gombbal az Eseményindítókelemre, majd válassza Új eseményindítólehetőséget.
A Lekérdezés menüben válassza A sablonparaméterek értékeinek megadásalehetőséget. Másik lehetőségként a (Ctrl-Shift-M) billentyűkombinációt lenyomva megnyithatja a Sablonparaméterek értékeinek megadása párbeszédpanelt.
A Sablonparaméterek értékeinek megadása párbeszédpanelen adja meg a következő értékeket a megjelenített paraméterekhez.
Paraméter Érték Szerző Az Ön neve Létrehozás dátuma Mai dátum Leírás Ellenőrzi a szállítói hitelminősítést, mielőtt új beszerzési rendelést szúrhat be a szállítóval. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Távolítsa el és UPDATEvegye kiDELETEa listából.Kattintson az OK gombra.
A Lekérdezésszerkesztőbencseréld le a megjegyzést
-- Insert statements for trigger herea következő utasításra: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;A szintaxis érvényességének ellenőrzéséhez válassza a Lekérdezés menü Elemzés elemét. Ha hibaüzenetet ad vissza, hasonlítsa össze az utasítást az előző kódblokkdal, javítsa ki szükség szerint, és ismételje meg ezt a lépést.
A DML-eseményindító létrehozásához a Lekérdezés menüben válassza a Végrehajtás lehetőséget. A DML-eseményindító objektumként jön létre az adatbázisban.
Az Object Explorerben felsorolt DML-eseményindító megtekintéséhez kattintson a jobb gombbal Eseményindítók elemre, és válassza a Frissítéslehetőséget.
Használd a Transact-SQL-t
Object Explorer-ben csatlakozzon az Adatbázis-motor egy példányához, majd bontsa ki azt.
A Fájl menüben válassza az Új lekérdezés lehetőséget.
Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza az Végrehajtás lehetőséget. Ez a példa ugyanazt a tárolt DML-eseményindítót hozza létre, mint korábban. Az eseményindító érvényes a többhelyes és az egysoros beszúrásokra, és optimális az egysoros beszúrásokhoz.
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;