概要
相関名oldとnewは、トリガーで発動条件としたDML文の変更前、変更後の値を取得、設定したりできます。oldが変更前の値、newが変更後の値になります。
oldとnewの参照値
oldとnewの値は、DMLの種類によって取得できる場合とできない場合があります。
例えば、INSERTの場合、oldは既存のレコードがないため、NULLになります。
それらをまとめたものを以下にまとめます。
DML | old | new |
---|---|---|
INSERT | NULL | 挿入前の値 |
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’の値が挿入されるようになります。