Freigeben über


DML-Trigger in der AdventureWorks-Beispieldatenbank

In diesem Thema werden verschiedene Beispiele für DML-Trigger beschrieben, die in der AdventureWorks-Beispieldatenbank enthalten sind. Diese DML-Trigger sind auf die Durchsetzung der Geschäftsregeln von Adventure Works Cycles und den Schutz der Datenintegrität ausgerichtet.

So zeigen Sie den Text der einzelnen Trigger in SQL Server Management Studio an

  1. Suchen Sie im Objekt-Explorer die Tabelle, für die der Trigger definiert wurde, und erweitern Sie den Ordner Trigger.

  2. Klicken Sie mit der rechten Maustaste auf den gewünschten Trigger, und klicken Sie anschließend auf Skript für Trigger als.

Festlegen eines Feldes nach einer Aktualisierung

uSalesOrderHeader-DML-Trigger

Die Sales.SalesOrderHeader-Tabelle enthält die RevisionNumber-Spalte, in der widergespiegelt wird, wie oft eine bestimmte Zeile (mit Ausnahme des Feldes Status) aktualisiert wurde. Der uSalesOrderHeader-DML-Trigger erhöht das Feld RevisionNumber um eins oder legt es auf eins fest, falls es nach einer Aktualisierung den Wert Null enthält.

Der uPurchaseOrderHeader-DML-Trigger führt für die Purchasing.PurchaseOrderHeader-Tabelle dieselbe Aktion aus wie der uSalesOrderHeader-DML-Trigger für die Sales.SalesOrderHeader-Tabelle.

Auffüllen einer Tabelle nach einer Einfügung und anschließendes Festlegen eines Feldes in einer anderen Tabelle

DML-Trigger iPurchaseOrderDetail und uPurchaseOrderHeader

Wenn Daten in die PurchaseOrderDetail-Tabelle eingefügt werden, fügt der iPurchaseOrderDetail-DML-Trigger einen Teil der eingefügten Daten auch in die Production.TransactionHistory-Tabelle ein. Da mehrere Zeilen in PurchaseOrderDetail eine Bestellung in der PurchaseOrderHeader-Tabelle bilden, muss das Subtotal-Feld in PurchaseOrderHeader aktualisiert werden, wenn eine Einfügung in PurchaseOrderDetail stattfindet. Der iPurchaseOrderDetail-Trigger aggregiert das LineTotal-Feld von PurchaseOrderDetail für einen bestimmten Kaufauftrag und legt diese Aggregation für das Subtotal-Feld von PurchaseOrderHeader fest.

Beachten Sie, dass, sofern der DML-Trigger eine Aktualisierung von Purchasing.PurchaseOrderHeader ausführt, durch die genannte Aktion der uPurchaseOrderHeader -Aktualisierungstrigger ausgelöst wird, der für die Purchasing.PurchaseOrderHeader-Tabelle vorhanden ist. Weitere Informationen zu Triggern, durch die andere Trigger ausgelöst werden, finden Sie unter Verwenden von geschachtelten Triggern.

Der uPurchaseOrderDetail-DML-Trigger führt dieselben Aktionen für die Tabellen TransactionHistory und PurchaseOrderHeader aus wie der iPurchaseOrderDetail-Trigger. Er führt diese Aktionen jedoch auch aus, wenn die PurchaseOrderDetail-Tabelle aktualisiert wird und nicht, wenn eine Einfügung in ihr vorgenommen wird.

Die DML-Trigger iWorkOrder und uWorkOrder für die Production.WorkOrder-Tabelle fügen nur Daten in die TransactionHistory-Tabelle ein.

Siehe auch

Konzepte