zoukankan      html  css  js  c++  java
  • ORACLE触发器判断是否更新了某个字段

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

       

       1: if :NEW.C != :OLD.C then
       2:      return;
       3: end if;
    但是这样有一个问题:更新不一定值有变化.当更新的值有变化时,它很好的实现了业务逻辑,但是如果更新的值没有变化,那么这段代码就会失效了。

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


       1: if updating('C') then
       2:    return;
       3: end if;

  • 相关阅读:
    Django(四)
    Django(三)
    Django(二)
    Django 基础篇
    jQuery
    JDK,JRE,JVM区别与联系
    webdriver API中文文档
    selenium及webdriver的原理
    JAVA IO流结构图
    抽象工厂与工厂方法的区别
  • 原文地址:https://www.cnblogs.com/kerrycode/p/3584865.html
Copyright © 2011-2022 走看看