在某表orginfo上建立触发器,其中包括以下动作:
增删改此表的记录时,需要查询此表,甚至改写此表的其他记录。报告“ora-04091:表已经被修改,对于触发器/函数不可见”
查看oracle developer's guide ,在其中trigger的章节搜索ora-04091,根据说明,对于使用了for each row 的触发器,做了DML操作(delete,update,insert)未提交时不允许其他PL/SQL对此表的DML操作以及查询,因为此时数据不一致。
解决办法:新建与orginfo结构完全相同的临时表tmp_orginfo,使得在orginfo上的触发器读写tmp_orginfo,再用tmp_orginfo上的触发器写回orginfo,解决ora-04091问题。
解决ORA-04091错误
本文介绍了解决在Oracle数据库中遇到的ORA-04091错误的方法。该错误通常发生在使用foreachrow的触发器进行DML操作时。通过创建一个与原表结构相同的临时表来规避这一问题。
2475

被折叠的 条评论
为什么被折叠?



