次の方法で共有


AdventureWorks サンプル データベースの DML トリガ

このトピックでは、AdventureWorks2008R2 サンプル データベースに付属している DML トリガの例の一部について説明します。付属の DML トリガは、Adventure Works Cycles のビジネス ルールを実施し、データの整合性を保護するためにデザインされています。

SQL Server Management Studio で各トリガのテキストを表示するには

  1. オブジェクト エクスプローラでトリガが定義されているテーブルに移動し、[トリガ] フォルダを展開します。

  2. 任意のトリガを右クリックし、[トリガをスクリプト化] をクリックします。

更新後のフィールドの設定

uSalesOrderHeader DML トリガ

テーブル Sales.SalesOrderHeader には、Status フィールドを除く特定の行の更新回数を反映する RevisionNumber 列があります。更新が行われると、DML トリガ uSalesOrderHeader によって RevisionNumber フィールドが 1 つずつ加算されるか、NULL の場合は 1 に設定されます。

uPurchaseOrderHeader DML トリガはテーブル Purchasing.PurchaseOrderHeader に対し、uSalesOrderHeader DML トリガがテーブル Sales.SalesOrderHeader に対して実行するのと同じアクションを実行します。

挿入後のテーブルへのデータ格納、および別テーブルのフィールド設定

iPurchaseOrderDetail DML トリガおよび uPurchaseOrderHeader DML トリガ

PurchaseOrderDetail テーブルにデータが挿入されると、挿入されたデータの一部が Production.TransactionHistory テーブルにも DML トリガ iPurchaseOrderDetail によって挿入されます。PurchaseOrderHeader テーブルの 1 つの発注は PurchaseOrderDetail の複数の品目で構成されているので、PurchaseOrderDetail で挿入を行った場合は PurchaseOrderHeader の Subtotal フィールドを更新する必要があります。iPurchaseOrderDetail トリガは、特定の受注について PurchaseOrderDetail の LineTotal フィールドを集計し、その集計結果を PurchaseOrderHeader の Subtotal フィールドに設定します。

DML トリガによって Purchasing.PurchaseOrderHeader が更新されると、Purchasing.PurchaseOrderHeader テーブルにある uPurchaseOrderHeader 更新トリガが起動します。他のトリガを起動させるトリガの詳細については、「入れ子になったトリガーの使用」を参照してください。

iPurchaseOrderDetail により TransactionHistory テーブルおよび PurchaseOrderHeader テーブルに対して行われるアクションと同じアクションが、DML トリガ uPurchaseOrderDetail によって、挿入を受け取ったときではなく PurchaseOrderDetail テーブルが更新されたときに行われます。

テーブル Production.WorkOrder の DML トリガ iWorkOrder および uWorkOrder によってデータが挿入されるのは TransactionHistory テーブルのみです。

関連項目

概念