管理の手引き


トリガーの作成

トリガーは、指定した基礎表またはタイプ付き表に対する INSERT、 UPDATE、DELETE 文節と一緒に実行される一連のアクション、 またはそれらの文節によってトリガー起動される一連のアクションを定義するものです。 トリガーは、たとえば次のような目的で使います。

トリガーにニックネームを使用することはできません。

トリガーを使えば、一般的な保全規則や業務規則をサポートできます。 たとえば、トリガーによって、注文に応じる前に顧客のクレジット限度を調べたり、 要約データ表を更新したりできます。

トリガーを使うことの利点は、次のとおりです。

コントロール・センターを使用してトリガーを作成するには、以下のようにします。
  1. オブジェクト・ツリーを順に展開し、 「トリガー (Triggers)」フォルダーを表示します。
  2. 「トリガー (Triggers)」フォルダーを右クリックして、 ポップアップ・メニューから「作成 (Create)」を選択します。
  3. トリガーに関する情報を指定します。
  4. トリガーによって呼び出すアクションを指定し、 「Ok」をクリックします。

コマンド行を使用してトリガーを作成するには、以下のように入力します。

   CREATE TRIGGER <name>
      <action> ON <table_name>
      <operation>
      <triggered_action>

次の SQL ステートメントは、新人が採用されるたびに従業員の数を増やすトリガーが作成されます。 これによって、EMPLOYEE 表に行が追加されるたびに、 COMPANY_STATS 表の従業員数 (NBEMP) 列に 1 が加算されます。

   CREATE TRIGGER NEW_HIRED
      AFTER INSERT ON EMPLOYEE
      FOR EACH ROW MODE DB2SQL
      UPDATE COMPANY_STATS SET NBEMP = NBEMP+1;

トリガー本体には、INSERT、探索 UPDATE、探索 DELETE、全選択、SET 変位変数、 および SIGNAL SQLSTATE のうちの 1 つ以上の SQL ステートメントを含めることができます。 トリガーは、それが参照する INSERT、 UPDATE、または DELETE ステートメントの前または後に起動できます。 CREATE TRIGGER ステートメントの構文に関する完全な情報については、 SQL 解説書 を参照してください。 トリガーの作成および使用についての詳細は、アプリケーション開発の手引き を参照してください。
注:BEFORE トリガーの場合は、 識別列以外の生成列の列名を、 トリガー・アクションによって指定することはできません。 したがって、生成される識別値は BEFORE トリガーに認識されます。

トリガーの従属関係

他のオブジェクトに対するトリガーの従属関係は、 すべて SYSCAT.TRIGDEP カタログに記録されます。 トリガーはさまざまなオブジェクトに従属する可能性があります。 これらのオブジェクトと従属のトリガーについては、 SQL 解説書 の DROP ステートメントの説明で詳細に説明されています。

これらのオブジェクトのどれかを除去すると、トリガーは機能しなくなりますが、 その定義はカタログ内に残ります。 そのトリガーを再び有効にするには、カタログからその定義を取り出し、 新しい CREATE TRIGGER ステートメントを実行依頼してください。

トリガーを除去すると、その定義は SYSCAT.TRIGGERS カタログ視点から削除され、 その従属関係もすべて SYSCAT.TRIGDEP カタログ視点から削除されます。 トリガーに UPDATE、INSERT、または DELETE 従属性のあるパッケージは、 すべて無効になります。

従属オブジェクトが視点で、それが作動不能になっている場合は、 トリガーにも作動不能のマークが付けられます。 作動不能のマークが付けられたトリガーに従属するパッケージがあれば、すべて無効にされます。 (詳細については、オブジェクトを変更する場合のステートメントの従属関係を参照してください。)


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]