【发布时间】:2013-05-03 16:42:38
【问题描述】:
我的朋友问我这个问题,我无法解决。
假设我在table1 上有两个触发器。
两者都是 BEFORE INSERT 触发器。
两个触发器都尝试更新row 1 或table2。
在table1 上运行INSERT 查询时,两个触发器都尝试更新table2 的同一行并导致死锁。
这是一个简化的问题。
在实际情况下,大约有 50 个触发器和其他一些原因,我们无法在任何触发器中使用 COMMIT。
现在请帮我解决上述问题。
- 有什么东西可以让我对触发器进行排序。
- 是否可以通过任何方式利用保存点来解决此问题。
- 或者我需要创建一个临时表并对其进行处理的任何方式。
请说明是否有可行的解决方案。
【问题讨论】:
标签: oracle triggers database-deadlocks