Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
W tym artykule opisano sposób tworzenia wyzwalacza języka Transact-SQL Data Manipulation Language (DML) za pomocą programu SQL Server Management Studio lub instrukcji Transact-SQL CREATE TRIGGER .
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
Ograniczenia
Aby uzyskać listę ograniczeń i ograniczeń związanych z tworzeniem wyzwalaczy DML, zobacz TWORZENIE WYZWALACZA.
Uprawnienia
Wymaga ALTER uprawnienia do tabeli lub widoku, w którym jest tworzony wyzwalacz.
Jak utworzyć wyzwalacz DML
Możesz użyć jednej z następujących metod:
Korzystanie z programu SQL Server Management Studio
W Eksploratorze obiektów połącz się z instancją Silnika bazy danych, a następnie rozwiń tę instancję.
Rozwiń węzeł Bazy danych, rozwiń
AdventureWorks2025bazę danych, rozwiń węzeł Tabele, a następnie rozwiń tabelęPurchasing.PurchaseOrderHeader.Kliknij prawym przyciskiem myszy Wyzwalacze, a następnie wybierz Nowy Wyzwalacz.
W menu zapytania wybierz pozycję Określ wartości parametrów szablonu. Alternatywnie możesz nacisnąć (Ctrl-Shift-M), aby otworzyć okno dialogowe Określanie wartości parametrów szablonu.
W oknie dialogowym Określ wartości parametrów szablonu wprowadź następujące wartości dla wyświetlanych parametrów.
Parametr Wartość Autor Twoja nazwa Data utworzenia Dzisiejsza data Opis Sprawdza ocenę kredytową dostawcy przed zezwoleniem na wstawienie nowego zamówienia zakupu z dostawcą. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Usuń UPDATEelement iDELETEz listy.Kliknij przycisk OK.
W edytorze zapytań zastąp komentarz
-- Insert statements for trigger herenastępującą instrukcją: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;Aby sprawdzić, czy składnia jest prawidłowa, w menu Zapytanie wybierz pozycję Przeanalizuj. Jeśli zostanie zwrócony komunikat o błędzie, porównaj instrukcję z poprzednim blokiem kodu, popraw je zgodnie z potrzebami i powtórz ten krok.
Aby utworzyć wyzwalacz DML, z menu Zapytanie wybierz pozycję Wykonaj. Wyzwalacz DML jest tworzony jako obiekt w bazie danych.
Aby wyświetlić wyzwalacz DML wymieniony w Eksploratorze obiektów, kliknij prawym przyciskiem myszy Wyzwalacze i wybierz pozycję Odśwież.
Korzystanie z Transact-SQL
W Eksploratorze obiektów połącz się z instancją Silnika bazy danych, a następnie rozwiń tę instancję.
W menu Plik wybierz pozycję Nowe zapytanie.
Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie wybierz pozycję Wykonaj. W tym przykładzie tworzony jest ten sam przechowywany wyzwalacz DML, jak poprzednio. Wyzwalacz jest prawidłowy dla wstawiania wielu wierszy i pojedynczych wierszy oraz optymalne dla wstawiania pojedynczych wierszy.
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;