Oracle触发器中的:new和:old的使用

:new— 触发器执行过程中触发表作操作的当前行的新纪录
:old— 触发器执行过程中触发表作操作的当前行的旧纪录
 
我们在使用 :new 或者 :old 的操作时需要注意以下问题:
 
1、  必须是行级触发器,因为 :new 或者 :old 是当前触发表操作的当前行的新数据或者旧数据,所以必须在行级触发器中才能使用。否则编译时会出现错误。
 
2、  当触发器被不同事件触发时,需要注意:
    insert 触发操作   只有  :new
    delete 触发操作   只有  :old
    update 触发操作   都有。
    如果违反上述操作中随意使用 :new 或者 :old 不会在编译时报错误但是会发现使用这两个关键字无效。
 
3、  使用触发器时如果要修改 :new 的值需要注意:
    只有行级前触发器才能修改 :new 的值,而行级后触发器不可以。
    因为行级前触发器是在本行 DML 操作之前,所以才能修改 :new 的值。从逻辑上说,也只有在这时修改才有意义。如果行级后触发器要试图修改 :new 的值会报变异错误。从逻辑上说后触发器的执行已经在本行 DML 操作,以后了,再修改 :new 的值已经不会对数据产生影响了。
 
4、  当在触发条件中使用 :new 或者 :old 的时候注意,只能直接写 old 或者 new ,不能带符号 ”:” 否则会出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值