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