ホームページ >バックエンド開発 >PHPチュートリアル >SQL Server 2005 INSTEAD-OF トリガー_PHP チュートリアルの使用方法
トリガーは、ストアド プロシージャに似たデータベースオブジェクトであり、データベース環境で特定のリクエストに応答します。 SQL Sever 2005 には、AFTER、データ定義言語 (DDL)、および INSTEAD-OF という 3 つのトリガー オブジェクトが含まれています。
AFTERトリガーはストアドプロシージャで、delete文などのデータ操作文の後に発生します。 DDL は、データベース エンジンのオブジェクト定義レベルのイベント (DROP TABLE ステートメントなど) に応答できるようにする SQL Server 2005 の新しいトリガーです。 INSTEAD-OF トリガーは、データベース エンジンのデータ操作ステートメントの代わりに実行できるオブジェクトです。例: INSTEAD-OF INSERT トリガーをテーブルにアタッチして、データベースにこのトリガーを実行するように指示します。
INSTEAD-OFトリガーを使用する理由
INSTEAD-OFトリガーはSQL Severの強力なオブジェクトであり、開発者はデータベースエンジンを転送して、開発要件を満たすためにさまざまな作業を完了することができます。一例として、データベース テーブルに INSTEAD-OF トリガーを追加すると、テーブルを変更する必要がない場合、テーブルの内容をロールバックできます。指定したテーブルを変更する前に INSTEAD-OF トリガーをアクティブにする必要があるため、このメソッドを使用する場合は特に注意する必要があります。
INSTEAD-OF トリガーを使用するさらに良い理由は、ビュー処理です。 INSTEAD-OF トリガーをビューに追加した後、更新されたビューを作成できます。更新可能なビューを使用すると、データベース スキーマを完全に抽出できるため、OLTP データベース スキーマの問題を心配したり、データを標準ビューのセットに置き換えたりすることなく、この方法でシステムを設計できます。
例
更新可能なビューの概念をよりわかりやすく説明するために、例を示します。この例では、製品テーブル (製品を記録) と購入テーブル (購入を記録) を設計します。リスト A にはテーブルを作成するスクリプトが含まれています。このスクリプトを実行すると、例で使用されるテーブルが取得されます。リスト B スクリプトを実行して、テーブルにデータを追加します。
テーブルにデータが入ったので、これらのテーブルに対して意味のあるビューをいくつか作成できます。リストCを参照してください。
これは典型的な製品レベルのビューです。データベース内の 2 つのテーブルを結合してデータを簡素化します。ただし、データ抽出の場合、ビューを使用する利点はありません。 INSTEAD-OF トリガーをビューにアタッチすると、テーブルを変更できるようになりますが、テーブル内のデータを直接変更する必要はありません。リスト D のコードを使用して、vw_ProductPurchases ビューに INSTEAD-OF トリガーを作成します。
このINSTEAD OFトリガーの文に注目してください。 SQL Server によって作成されるデフォルトのトリガーは AFTER トリガーであるため、トリガー定義で INSTEAD OF 句を指定する必要があります。
トリガーの最初のステートメントは「check」ステートメントです。この例では、このステートメントを使用して INSERTED テーブルをチェックし、ProductID フィールドが表示されていることを確認し、他の PurchasePrice フィールドまたは ProductPrice フィールドが表示されていることを確認します。