2010-12-06 41 views
1

所以,我有表foo,我想,当触发t_foo火灾删除其他foo行:ORA-04091 - 如何更改触发器触发的表?

CREATE OR REPLACE TRIGGER "t_foo" AFTER INSERT OR DELETE OR UPDATE ON foo 

/*delete some other records from foo that are not :NEW.* or :OLD.* \* 

我怎么会去这样做没有得到一个ORA-04091:表名的变异,触发/功能可能看不到它。这甚至有可能吗?

+0

你想在触发器中改变表的结构吗?我是否正确阅读? – HLGEM 2010-12-06 14:00:40

+0

对不起,我的意思是改变foo的行数,而不是结构...我会编辑 – Shawn 2010-12-06 14:01:51

回答

8

为什么不在存储过程中这样做,您可以在事务中包装插入和删除,并且可以清楚地记录这种副作用行为?

+0

所以你要说删除逻辑存储在存储过程中,并从这个触发器调用它? – Shawn 2010-12-06 14:07:33

2

这基本上意味着您的表中存在相互依赖的行,可能是一个带有从列到主键的自引用的层次结构。你有没有想过ON DELETE CASCADE