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赋值吗?  没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值