【发布时间】:2017-06-27 12:55:11
【问题描述】:
我想将 INSERT 限制为任何获得锁的事务(其他事务排队等待,没有失败),同时允许并发读取、更新和删除(但显然不是正在插入的数据,这在 PG 中是不可能的)。
实现这一点的最轻的 LOCK 是什么?
【问题讨论】:
-
AFAIK 这是不可能的,防止插入的锁也防止更新和删除。也许如果你解释为什么你需要这个,有人可以提供不同的解决方案。
-
我想通了。我假设 SHARE ROW EXCLUSIVE 是我的最佳选择?
-
你不需要做任何事情。只需插入您需要的数据 - 任何其他尝试插入 same 主键值的事务都会自动等待。对该表的选择、更新和删除仍然有效。
-
我在每笔交易的序列中手动操作起始编号。我对此有一个具体的合理理由
标签: postgresql transactions locking postgresql-9.6