【问题标题】:ORA-04098 is invalid and failed re-validationORA-04098 无效且重新验证失败
【发布时间】:2013-11-19 05:34:04
【问题描述】:

我写了下面的触发器,编译成功了。

create or replace trigger after_update_datetable
after update on date_table
for each row
begin
   if(TRUNC(:new.end_date) - TRUNC(:new.start_date) > 90) THEN
    UPDATE date_table set END_DATE = :old.END_DATE, START_DATE =  :old.START_DATE;
   END IF;
END;

但是当我执行下面的更新语句时,我得到了这个错误

更新 date_table 设置 end_date = sysdate, start_date = sysdate-100;

触发失败 -ORA-04098 无效且重新验证失败。

感谢任何帮助。谢谢

【问题讨论】:

    标签: sql oracle11g triggers


    【解决方案1】:

    您正在从触发器更新同一个表,这是不允许的:

    if(TRUNC(:new.end_date) - TRUNC(:new.start_date) > 90) THEN
    UPDATE date_table set END_DATE = :old.END_DATE, START_DATE =  :old.START_DATE;
    END IF;
    

    您最好使用 BEFORE 触发器而不是 AFTER 触发器,并更新记录的值:NEW see this answer, it will be useful for you

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-15
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多