postgresql-为什么行共享锁与行排他锁冲突?

问题描述 投票:0回答:0

Postgresql 官方文档 声明:ROW EXCL 与 ROW SHARE 不冲突。但是

如果在一个事务中执行语句

select * from demo for update
,在另一个事务中执行语句
update demo set ...
,那么第二个事务将等待第一次提交。

我的理解是:第一个事务只获取每一行的 ROW SHARE 锁,第二个只获取 ROW EXCLUSIVE 锁,它们不应该相互冲突,至少如官方文档所说。

如果我将整个表锁定为 ROW SHARE 锁,那么就不会有问题。

postgresql transactions locking
© www.soinside.com 2019 - 2024. All rights reserved.