スポンサーリンク

[PL/SQL] トリガーの相関名oldとnewの使い方

概要

相関名oldとnewは、トリガーで発動条件としたDML文の変更前、変更後の値を取得、設定したりできます。oldが変更前の値、newが変更後の値になります。

oldとnewの参照値

oldとnewの値は、DMLの種類によって取得できる場合とできない場合があります。
例えば、INSERTの場合、oldは既存のレコードがないため、NULLになります。
それらをまとめたものを以下にまとめます。

DMLoldnew
INSERTNULL挿入前の値
UPDATE変更前の値変更予定の値
DELETE削除前の値NULL

できるようになること

  • 発動条件としたDML文の値を持ってきて処理を行う事
  • 発動条件としたDML文の値を加工して実行することができる

実践

ソースコード

CREATE OR REPLACE TRIGGER trig_test
BEFORE INSERT ON emp
FOR EACH ROW

BEGIN
  :new.empid := 'ID' || :new.empid;
END;
/

解説

:new.empidを使って、挿入予定のデータに文字列’ID’を追加してからINSERTされるように処理を行っています。

例えば、INSERT INTO EMP(EMPID, NAME, AGE) VALUES(‘5’, ‘TANAKA’, ’23’);のような実行をした場合、EMPIDは、’ID5’の値が挿入されるようになります。