我的朋友问我这个问题,我无法解决。
考虑一个我有两个触发器的场景table1
。两者都是 BEFORE INSERT 触发器。两个触发器都尝试更新row 1
. table2
当 INSERT 查询在 上运行时table1
,两个触发器都尝试更新同一行table2
并导致死锁。这是一个简化的问题。在实际情况下,大约有 50 个触发器和一些其他原因,因此我们不能在任何触发器中使用 COMMIT。
现在请帮助我解决上述问题。
- 有什么东西可以让我对触发器进行排序。
- 是否可以以任何方式利用保存点来解决此问题。
- 或者我需要创建一个临时表并对其进行处理的任何方式。
请解释是否有任何解决方案是可行的。