您的位置:首页 > 数据库 > Oracle

ORACLE触发器判断是否更新了某个字段

2014-03-06 17:03 567 查看
       今天遇到一个有意思的小问题,一同事有这样一个需求:在更新表T时,如果只是更新字段C,那么不希望触发该该表的触发器去处理业务逻辑。即想在触发器中做出判断:如果更新了字段C,那么跳出触发器,不处理业务逻辑,如果是更新其它字段,那么让触发器去处理业务逻辑。
他是这样做的

   
[code] if :NEW.C != :OLD.C then


return;


end if;

[/code]

但是这样有一个问题:更新不一定值有变化.当更新的值有变化时,它很好的实现了业务逻辑,但是如果更新的值没有变化,那么这段代码就会失效了。

其实这个只需要使用条件谓词 DELETING即可解决,当触发事件是UPDATE时,如果修改了COLUMN_X时,则UPDATING(COLUMN_X)则为TRUE,否则为FALSE,所以上面代码改为下面代码即可实现其业务需求:

[code] if updating('C') then


return;


end if;

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: