oracle触发器指定列更新触发
在工作中时而不时都有可能会用到触发器,我现在就是利用oracle触发器解决某些表的某些字段发生变化后会将日志记录到另外一个表中,然后通过定时器的方式读取日志信息,定时更新到redis中,关于这个项目的架构后续我会说一下,现在我们只说一下oracle触发器指定列更新触发,具体代码如下:
CREATE OR REPLACE TRIGGER TRGSYNC_USER_TEST_AFTER
after insert or <span style="color:#ff0000;">update of USER_NAME,USER_PWD,TYPE</span> or delete on USER_TEST
for each row
begin
if inserting then
begin
--插入日志表代码
end;
end if;
end TRGSYNC_USER_TEST_AFTER;
注意:虽然这样可以解决刚说的问题,但是存在如果是ORACLE是BLOB类型会出错,所以想到了另外一种解决办法,排除一些字段不执行操作,具体代码如下:
if updating('REMARK')
or updating('TEST1')
or updating('TEST2')
or updating('UPDATE_TIME')
or updating('TEST3') then
return;
end if;
加上这个就解决排除这些字段,其它字段改变就会触发,成功解决。
从中得出,谓词的字段要加单引号,哪怕它是一个字段变量不是字面量值。
参考文章
原文链接:https://blog.csdn.net/tanyongbing1988/article/details/45666945