トリガー・イベント述部

トリガー・イベント述部は、トリガーをアクティブにしたイベントをテストするためのトリガー・アクションで使用されます。 これは、コンパイル済みトリガー定義のトリガー・アクションでのみ有効です (SQLSTATE 42601)。

構文図を読む構文図をスキップするDELETINGINSERTINGUPDATING
DELETING
トリガーが削除操作でアクティブになった場合に TRUE になります。それ以外の場合は FALSE になります。
INSERTING
トリガーが挿入操作でアクティブになった場合に TRUE になります。それ以外の場合は FALSE になります。
UPDATING
トリガーが更新操作でアクティブになった場合に TRUE になります。それ以外の場合は FALSE になります。

  • トリガー・イベント述部は、コンパウンド SQL (コンパイル済み) ステートメントを SQL-procedure-statement として使用する CREATE TRIGGER ステートメントのトリガー・アクションのどこにでも使用できます。 その他のコンテキストではキーワードは認識されず、列名または変数名としての解決が試行されます。

以下のトリガーは、新しい従業員を採用するたびに (つまり EMPLOYEE 表に新しい行が挿入されるたびに)、従業員数に 1 を加算し、従業員が会社を辞めるたびに従業員数から 1 を減算します。さらに、更新時に昇給額が現在の給料の 10 % を超えることになる場合にはエラーが出されます。これらは、その条件に含まれるトリガー・イベント述部を使用して行われます。
   CREATE TRIGGER HIRED
     AFTER INSERT OR DELETE OR UPDATE OF SALARY ON EMPLOYEE
     REFERENCING NEW AS N OLD AS O FOR EACH ROW
       BEGIN
         IF INSERTING 
         THEN UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1;
         END IF;

         IF DELETING 
         THEN UPDATE COMPANY_STATS SET NBEMP = NBEMP - 1;
         END IF;

         IF (UPDATING AND (N.SALARY > 1.1 * O.SALARY))
         THEN SIGNAL SQLSTATE '75000' SET MESSAGE_TEXT = 'Salary increase>10%'
         END IF;
       END;