Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
In diesem Artikel wird beschrieben, wie Sie einen Transact-SQL Data Manipulation Language (DML)-Trigger mit SQL Server Management Studio oder der Transact-SQL-Anweisung CREATE TRIGGER erstellen.
Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.
Einschränkungen
Eine Liste der Einschränkungen und Einschränkungen im Zusammenhang mit dem Erstellen von DML-Triggern finden Sie unter CREATE TRIGGER.
Berechtigungen
Erfordert ALTER die Berechtigung für die Tabelle oder Ansicht, für die der Trigger erstellt wird.
Erstellen eines DML-Triggers
Wählen Sie eine der folgenden Methoden:
Verwenden von SQL Server Management Studio
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.
Erweitern Sie Datenbanken, erweitern Sie die
AdventureWorks2025Datenbank, erweitern Sie Tabellen, und erweitern Sie dann die TabellePurchasing.PurchaseOrderHeader.Klicken Sie mit der rechten Maustaste auf Trigger, und wählen Sie Neuer Triggeraus.
Wählen Sie im Menü "Abfrage " die Option "Werte für Vorlagenparameter angeben" aus. Alternativ können Sie die Tastenkombination STRG+UMSCHALT+M drücken, um das Dialogfeld Werte für Vorlagenparameter angeben zu öffnen.
Geben Sie im Dialogfeld Werte für Vorlagenparameter angeben die folgenden Werte für die angezeigten Parameter ein.
Parameter Wert Autor Ihr Name Erstellungsdatum Heutiges Datum Beschreibung Überprüft die Anbieterbonität, bevor eine neue Bestellung mit dem einzufügenden Anbieter zugelassen wird. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Entfernen UPDATEundDELETEaus der Liste.Wählen Sie OK aus.
Ersetzen Sie im Abfrage-Editorden Kommentar
-- Insert statements for trigger heredurch die folgende Anweisung: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;Um zu überprüfen, ob die Syntax gültig ist, wählen Sie im Menü "Abfrage " die Option "Analysieren" aus. Wenn eine Fehlermeldung zurückgegeben wird, vergleichen Sie die Anweisung mit dem vorherigen Codeblock, korrigieren Sie nach Bedarf, und wiederholen Sie diesen Schritt.
Um den DML-Trigger zu erstellen, wählen Sie im Menü "Abfrage " die Option "Ausführen" aus. Der DML-Trigger wird als Objekt in der Datenbank erstellt.
Zum Anzeigen des DML-Triggers im Objekt-Explorer klicken Sie mit der rechten Maustaste auf Trigger und wählen Aktualisierenaus.
Verwenden von Transact-SQL
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.
Wählen Sie im Menü "Datei " die Option "Neue Abfrage" aus.
Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel wird derselbe gespeicherte DML-Trigger wie zuvor erstellt. Der Auslöser ist gültig für Mehrfach- und Einfügezeilen und optimal für Einfügezeilen.
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;