今天有同事在测试环境建了个触发器:

CREATE OR REPLACE TRIGGER "POSP_TRANS_A"."trg_update_time"
BEFORE INSERT OR UPDATE ON "POSP_TRANS_A"."POS_ORDER" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
BEGIN
   IF INSERTING THEN
      :NEW.UPDATE_TIME := SYSDATE;
   ELSE
      :NEW.UPDATE_TIME := SYSDATE;
   END IF;
END;

测试无误后,通过Navicat Premium导出到sql文件,在生产环境建立。

结果生产环境执行后报错:ora-04098:触发器无效且未通过重新验证

查来查去没查到原因,最后发现,自动导出的sql文件里面,自动给加了个分号

触发器里面的一个小坑触发器里面的一个小坑

去掉分号,问题解决!

另,我用plsql developer导出触发器,发现并没有这个问题 = =

触发器里面的一个小坑触发器里面的一个小坑

相关文章: