您的位置:首页 > 数据库 > Oracle

ora-04091问题的解决

2008-03-22 16:33 363 查看
在某表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问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  insert delete oracle each