在oracle中更新触发器失败之前

时间:2017-03-08 08:11:39

标签: sql oracle plsql

我已经创建了一个触发器,它会在我的表中更新worker的firstName时触发everey时间:

CREATE OR REPLACE TRIGGER trigger_before_update
BEFORE UPDATE ON t_workers 
FOR EACH ROW
  BEGIN
     insert into t_logtable 
     values (pk_workerid , sysdate, :old.firstName)
  END;

但是每当我尝试更新一行时,这就是我得到的错误:

  

ora-04098触发器无效且重新验证失败

触发器有什么问题?

正如您所看到的,关键是在更新之前插入旧值,是否有任何oracle解决方案,对于通用变量/列名称?我的意思是:old.firstName,但是会检查任何列,并获取已更新的任何旧值。它可以是firstNamelastNamesalary任何内容。

1 个答案:

答案 0 :(得分:1)

试试这个:

CREATE OR REPLACE TRIGGER trigger_before_update
BEFORE UPDATE ON t_workers 
FOR EACH ROW
  BEGIN
     insert into t_logtable 
     values (pk_workerid , sysdate, :old.firstName);
  END;

添加;插入代码后