ORACLE触发器判断是否更新了某个字段
2014-03-06 17:03
567 查看
今天遇到一个有意思的小问题,一同事有这样一个需求:在更新表T时,如果只是更新字段C,那么不希望触发该该表的触发器去处理业务逻辑。即想在触发器中做出判断:如果更新了字段C,那么跳出触发器,不处理业务逻辑,如果是更新其它字段,那么让触发器去处理业务逻辑。
他是这样做的
[/code]
但是这样有一个问题:更新不一定值有变化.当更新的值有变化时,它很好的实现了业务逻辑,但是如果更新的值没有变化,那么这段代码就会失效了。
其实这个只需要使用条件谓词 DELETING即可解决,当触发事件是UPDATE时,如果修改了COLUMN_X时,则UPDATING(COLUMN_X)则为TRUE,否则为FALSE,所以上面代码改为下面代码即可实现其业务需求:
[/code]
他是这样做的
[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]
相关文章推荐
- oracle 索引类型
- Oracle 10g逻辑备份---ORA-39002、ORA-39070……
- mysql相似于oracle的to_char() to_date()方法
- 一次rac+dataguard 创建过程遇到密码文件问题
- 解析oracle的rownum
- oracle数据库的存储过程
- oracle函数整理---Lpad函数和Rpad函数
- Oracle的内存结构
- Oracle的内存结构
- vb.net 调用oracle的package中的Procedure
- oracle数据库的归档模式
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案
- MySQL、Oracle中版本号的比较
- ORACLE 分割字符串的函数实现
- 在Windows操作系统下通过PL/SQL连接到VM中Linux安装的Oracle
- Oracle数据库三种标准的备份方法
- oracle--v$lock 字段详解
- 【转】Oracle中如何插入特殊字符:& 和 ' (多种解决方案)
- SQL*Net( Oracle's networking software)简介
- Oracle 查询表中各列名称、表中列数