Oracle 触发器中NEW和OLD关修饰词说明

触发器中OLD 和 NEW修饰词,old 代表变更前记录,new代表变更后的记录。

CREATE OR REPLACE TRIGGER derive_commission_pct
 BEFORE INSERT OR UPDATE OF salary ON employees
 FOR EACH ROW
 WHEN (NEW.job_id = 'SA_REP')
BEGIN
 IF INSERTING
 THEN :NEW.commission_pct := 0; --给:NEW.commission_pct赋值
 ELSIF :OLD.commission_pct IS NULL
 THEN :NEW.commission_pct := 0;
 ELSE
 :NEW.commission_pct := :OLD.commission_pct + 0.05;
 END IF;
END;

说明:

1、这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old。

2、可以使用WHEN限制 Trigger的触发条件。

3、NEW的赋值动作,想一想,如果是After类型的Trigger, 还允许对:NEW赋值吗?  没有

你可能感兴趣的:(Oracle)