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

更新 : 2006 年 4 月 14 日

このトピックでは、AdventureWorks サンプル データベースに付属している 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 で挿入を行った場合は PurchaseOrderHeaderSubtotal フィールドを更新する必要があります。iPurchaseOrderDetail トリガは、特定の受注について PurchaseOrderDetailLineTotal フィールドを集計し、その集計結果を PurchaseOrderHeaderSubtotal フィールドに設定します。

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

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

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

参照

概念

DML トリガについて

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

変更内容 :
  • SQL Server 2005 Service Pack 1 バージョンの AdventureWorks サンプル データベースには存在しないトリガに関する記述を削除しました。