【发布时间】:2012-04-26 00:25:50
【问题描述】:
我在表 A 上有一个更新后触发器(触发器 A),它可以对表 B 进行更改。
我在表 B 上还有一个更新后触发器(触发器 B),它不做任何更改,但查询表 A 以对非规范化进行一些健全性检查。
所以触发器 B 可以触发以下两种方式之一:
- 如果我直接更新表 B,或者
- 如果我更新表 A 并触发 A 触发,导致表 B 更新。
在情况 2 中,我得到一个 ORA-04091:表名正在变异,触发器/函数可能看不到它错误。这似乎是正确的。
我想在触发器 B 中检查表 A 是否“处于错误状态”并提前退出(在这种情况下不需要运行健全性检查)。
在我的触发器中测试它的最佳方法是什么?只需添加一个吞下异常的异常处理程序?还有比这更优雅的吗?
【问题讨论】:
标签: oracle plsql mutating-table