触发器(三、条件触发)

在使用触发器的过程中,我们经常发现真正关注的只有一部分数据,并不需要对每个操作都进行触发或处理。

此时可以用到条件触发,条件触发是有限制的,根据不同的需求,可以分为以下几个应用场景:

1.只关注某几列的数据变更,用update of

只有在update后面才能跟of,在insert和delete中无法只关注某几列,

会报错ORA-04073: column list not valid for this trigger type

比如下面的触发器,只关心2个字段的变更


分别执行2个update语句


of后面的字段更新触发了,而没有关注的字段更新没有触发。


2.只关心特定条件的记录,用WHEN

在有些设计不佳的应用中,有些字段可能经常会被update成原值,即无效的update,对这些update根本没有必要关注。

此时可以用when做条件过滤,WHEN条件在几乎所有触发器中都可以使用,并不局限于在update触发器。

下面用一个简单的案例看一下when的用法,判断OBJECT_NAME字段被修改成不一样的值时才执行触发


注意:WHEN条件里的OLD和NEW是不能带冒号:的

否则会报错ORA-25000: invalid use of bind variable in trigger WHEN clause


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值