希望有人可以帮助解决这个问题。我是触发器的新手,我正在尝试创建一个触发器来检查正在修改的记录是否具有特定值。
例如,我有一个名为 Filing 的表,它有一个 Filing_id 和一个 Filing_status,我想防止有人更新或删除该表中具有 Filing_status="FILED" 的任何记录。所以如果我有以下
Filing_id Filing_status Val
--------- ------------- ---
0 Filed X
如果有人试图修改 Val 触发器应该停止它我创建了以下触发器:
CREATE or replace TRIGGER TRG_PREV_FILING
BEFORE DELETE or UPDATE
ON PF.FILING
FOR EACH ROW
declare
rowcnt number;
BEGIN
SELECT COUNT(filing_id) INTO rowcnt FROM PF.FILING
where status = 'FILED'
and filing_id = :new.filing_id;
if (rowcnt > 0)
then
raise_application_error (-20100, 'You can not delete Or Update initial record');
end if;
END;
我面临的问题是我得到:ORA-04091 这是“表归档正在变异,触发器/函数可能看不到它”
所以基本上我不能在我正在执行触发器的同一张表上查询?这是我的问题吗?有人知道解决这个问题吗?
我很感激任何帮助