oracle触发器嵌套if

遇到一个需求就是:要监控某个表的数据变化,这个假设为表一,表一的某些字段如果发生了改变,就要将这个改变的值和字段的信息记录进表二,然后就使用触发器的形式进行这个需求的实现

CREATE OR REPLACE TRIGGER 触发器的名称
BEFORE
UPDATE ON 表一
FOR EACH ROW 
DECLARE 
变量的声明;
Begin
IF updating('SHIP_ID') THEN 
将改变的信息插入到表二中
END IF;
END;

然后发现了一个 bug:就是我修改了表一的某条记录的某个字段的信息,该字段所有字段的信息都会记录进表二,然后我的大佬叫我在插入前加入一个判断:

IF updating('SHIP_ID') AND :OLD.SHIP_ID!= :NEW.SHIP_ID

加入了一个and进行并列判断之后,发现修改表一的信息,不会插入表二了(然后我这个渣渣发现不了深层的原因是啥)
然后我就使用了if的嵌套

IF updating('SHIP_ID') THEN 
IF :OLD.SHIP_ID <> :NEW.SHIP_ID THEN
将改变的信息插入到表二中
END IF;
END IF;

然后我就成功了完成了这个需求了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39040527/article/details/105512908