某些数据库功能,例如SELECT ... FOR UPDATE
和ON DELETE CASCADE
,隐含地容易受到死锁的影响,因为数据库没有指定将使用什么锁定顺序。我发现有两个 讨论暗示 SQL 标准没有指定这种行为,更不用说具体的实现了。因此,我在假设我们无法控制锁定顺序的情况下进行操作(至少,如何做到这一点并不明显)。
如果我们不能依赖锁定顺序,我们应该如何避免数据库死锁?
如果我们不应该避免僵局(你将不得不非常努力地说服我相信这一点)那么我们应该做什么?
这个问题与数据库无关,所以请不要问我使用的是哪个数据库。