我对 PostgreSQL 死锁的阅读有点困惑。
一个典型的死锁例子是:
-- Transaction 1
UPDATE customer SET ... WHERE id = 1
UPDATE customer SET ... WHERE id = 2
-- Transaction 2
UPDATE customer SET ... WHERE id = 2
UPDATE customer SET ... WHERE id = 1
但是,如果我将代码更改如下:
-- Transaction 1
UPDATE customer SET ... WHERE id IN (1, 2)
-- Transaction 2
UPDATE customer SET ... WHERE id IN (1, 2)
这里会有死锁的可能吗?
本质上我的问题是:在第二种情况下,PostgreSQL 是一个接一个地锁定行,还是锁定条件覆盖的整个范围WHERE
?
提前致谢!