在读提交隔离级别:
如果我理解正确,如果没有预先存在的行会导致冲突,则两个并发事务INSERT ... ON CONFLICT DO NOTHING
- 它们之间会发生冲突 - 将具有以下行为:
- 其中一个事务将插入该行。
- 第二个事务将等待第一个事务提交,然后什么也不做(或插入以防第一个事务回滚)。
会不会在第二次事务中锁定该行?
另外,我想第二个事务的行为与我们已经有一行(已提交)的情况完全相同,并且我们做了一个冲突INSERT ... ON CONFLICT DO NOTHING
?
在读提交隔离级别:
如果我理解正确,如果没有预先存在的行会导致冲突,则两个并发事务INSERT ... ON CONFLICT DO NOTHING
- 它们之间会发生冲突 - 将具有以下行为:
会不会在第二次事务中锁定该行?
另外,我想第二个事务的行为与我们已经有一行(已提交)的情况完全相同,并且我们做了一个冲突INSERT ... ON CONFLICT DO NOTHING
?
INSERT ... ON CONFLICT DO NOTHING
如果检测到冲突,则不会锁定该行。您可以很容易地看出这一点,因为该xmax
行的 操作后将保持不变。无论冲突行是旧行还是只是并发插入,该操作都会产生相同的效果。