FOLLOWS句を使用して実行順序を設定する
1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。
実行順序に依存するようなトリガーを作成する場合は、FOLLOWS句を使用して実行順序を設定します。
トリガーの作成方法については、過去記事を参照してください。
トリガーの実行順序
タイミングが異なる2つ以上のトリガーを1つの表の作成した場合、トリガーは次の順序で実行されます。
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー)
ここに、タイミングの同じBEFORE 行トリガーを追加作成した場合、トリガーはどちらかの順序で実行されます。
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) 追加分 AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー)
または、
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) 追加分 BEFORE EACH ROWトリガー (BEFORE 行トリガー) AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー)
FOLLOWS句で実行順序を設定
トリガー作成時にFOLLOWS句を使用すると、指定した既存トリガーの後に起動するトリガーを作成することができます。
CREATE [OR REPLACE] TRIGGER 作成トリガー名 AFTER UPDATE ON 表名 FOR EACH ROW FOLLOWS 既存トリガー名