《Oracle命令语法速查》【 CREATE TRIGGER 】

データベーストリガーを作成する


CREATE [ OR REPLACE ] TRIGGER [ スキーマ . ] トリガー名 →
→┬ BEFORE ────────┬→
  │[ データ更新前に起動 ]│
  ├ AFTER  ────────┤
  │[ データ更新後に起動 ]│
  └ INSTEAD OF ──────┘
    [ DML 文発行時にトリガーを起動する(ビューのみ指定可) ]
→┬ (*1)     ──────────────────────┬→
  ├┬ ddl_event───┬┬ ON ┬ [ スキーマ ] . SCHEMA  ┬┘
  │└ ← OR  ────┘│    └ DATABASE ───────┘
  └┬ database_event ┬┘
    └ ← OR  ────┘
→ [ WHEN ( 条件式 ) ] → 
[ トリガー制約(トリガー起動条件)を指定する ]
→  pl/sql_block ;
[ 実行する PL/SQL 文を実装する ]

(*1)
→┬ INSERT   ─────────┬→
  │[ INSERT 文実行時に起動 ] │
  ├ DELETE   ─────────┤
  │[ DELETE 文実行時に起動 ] │
  ├ UPDATE [ OF ┬ 列名 ┬ ] ─┤
  │             └ ← , ┘     │
  │[ UPDATE 文実行時に起動 ] │
  └ ← OR  ──────────┘
→ ON ┬ [ スキーマ . ] 表名 ───────────────┬→
      └ [ NESTED TABLE 列名 OF ] [ スキーマ . ] ビュー名  ┘
[ 起動対象となるオブジェクトを指定する ]
→ [ [ REFERENCING ┬ OLD [ AS ] old  ───┬ ] ] →
                   ├ NEW [ AS ] new  ───┤
                   └ PARENT [ AS ] parent  ┘
[ 相関名を指定する ]
→ [ FOR EACH ROW ] →
[ 行レベルのトリガーにする ]