我已经创建了一个触发器,它会在我的表中更新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
,但是会检查任何列,并获取已更新的任何旧值。它可以是firstName
,lastName
,salary
任何内容。
答案 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;
添加;插入代码后