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