tshizuku03の日記

主にoracleやLinuxコマンドについての記事を載せていきたいと思っています。

PL/SQL行トリガー例文

この記事はQiitaにも記載しております PL/SQL行トリガー例文 - Qiita

PL/SQL基礎中の基礎をメモとして残します。

<<行トリガーの作成>>
SQL> CREATE OR REPLACE TRIGGER 注文_在庫_TRIG
  2  AFTER INSERT ON 注文 FOR EACH ROW
  3  BEGIN
  4     UPDATE 在庫
  5     SET    在庫数 = 在庫数 - :NEW.注文数
  6     WHERE  製品名 = :NEW.製品名;
  7  END;
  8 /

行トリガー例。

・2行目のタイミングには「BEFORE」もしくは「AFTER」を指定。
 BEFOREであればDML処理の前に起動し、AFTERであればDML処理の後に起動。

・3行目のイベントには、トリガーの起動するDML文の種類、 すなわち「INSERT」「UPDATE」「DELETE」

・4行目には、このトリガーを設定する表の名前を指定

・「ON 表名」の後ろに「FOR EACH ROW」というキーワードがあれば行トリガーであり、なければ、文トリガー。

・OLDとNEW

:OLD.列名 ←DML操作前の列値
:NEW.列名 ←DML操作後の列値

 

参考サイト

連載 PL/SQLを使ってみよう!第38回「文トリガー、行トリガーの構文」 | 集合研修 システム・テクノロジー・アイ銀座会場