トリガの使用
更新 : 2007 年 11 月
トリガは、特殊なストアド プロシージャであり、1 つ以上のデータ変更操作 (UPDATE、INSERT、または DELETE) によって特定のテーブルのデータを変更するときに実行されます。INSTEAD OF トリガとして知られる特殊なトリガでは、ビューの基になるベース テーブルの変更を指定できます。
トリガでは、ほかのテーブルに対するクエリや、複雑な SQL ステートメントを指定できます。ほかのテーブルに対するクエリや複雑な SQL ステートメントは、複雑なビジネス ルールや要件を適用するのに役立ちます。たとえば、顧客の現在のアカウント状態に基づいて、新しい注文の挿入を許可するかどうかを指定できます。
トリガは、参照整合性を適用するのにも役立ちます。参照整合性は、テーブルの行の追加、更新、または削除を行うときに、テーブル間に定義されたリレーションシップを保持します。ただし、参照整合性を適用するには、関連する表の間で主キー制約および外部キー制約を定義するのが最も良い方法です。テーブル デザイナを使用する場合は、テーブル間にリレーションシップを作成して、外部キーの制約を自動的に作成できます。詳細については、「テーブルのリレーションシップ (Visual Database Tools)」を参照してください。
トリガには、次の利点があります。
トリガは、自動的に実行されます。テーブルのデータに手動入力やアプリケーション アクションなどの変更が加えられると、すぐに起動します。
トリガでは、データベース内の関連テーブル間で連鎖変更を行うことができます。たとえば、titles テーブルの title_id 列に DELETE トリガを作成して、ほかのテーブルの一致する行を削除できます。このトリガは、一意のキーとして title_id 列を使用し、titleauthor、sales、および roysched の各テーブルで一致する行を検索します。
トリガでは、CHECK 制約 (Visual Database Tools)で定義されているよりも複雑な制限を適用できます。CHECK 制約とは異なり、トリガではほかのテーブルの列を参照できます。たとえば、titles テーブルに格納されている 1,000 円未満の本に対して、discounts テーブルに格納されている割引額を適用する更新内容をトリガでロールバックできます。
トリガの詳細および例については、使用するデータベース サーバーのドキュメントを参照してください。Microsoft SQL Server を使用する場合は、『SQL Server Books Online』の「CREATE TRIGGER」を参照してください。