Postgresql 官方文档 声明:ROW EXCL 与 ROW SHARE 不冲突。但是
如果在一个事务中执行语句
select * from demo for update
,在另一个事务中执行语句update demo set ...
,那么第二个事务将等待第一次提交。
我的理解是:第一个事务只获取每一行的 ROW SHARE 锁,第二个只获取 ROW EXCLUSIVE 锁,它们不应该相互冲突,至少如官方文档所说。
如果我将整个表锁定为 ROW SHARE 锁,那么就不会有问题。