我正在努力理解Postgresql行级锁,有人能帮我理解何时使用每种类型的锁吗。
    FOR UPDATE; FOR NO KEY UPDATE; FOR SHARE; FOR KEY SHARE;
我试着查看文档,但仍然无法理解其中的区别,也不知道何时使用什么以及如何使用它。
我希望有人能帮助我了解每把锁的使用情况,并明确何时选择每把锁。
锁定一排 FOR UPDATE 模式(如果计划删除或更新属于主键或唯一约束的列)
FOR UPDATE
锁定一排 FOR NO KEY UPDATE 模式下,如果计划仅更新不属于主键或唯一约束的列
FOR NO KEY UPDATE
锁定一排 FOR SHARE 模式,如果你不想让其他人修改它(这是一个非常罕见的要求)
FOR SHARE
锁定一排 FOR KEY SHARE 模式,如果您想阻止其他人删除属于主键或唯一约束的行或更新列(这也是一个非常罕见的要求)
FOR KEY SHARE
很难想出一个需要您使用的用例 共享 和 用于密钥共享 明确地它们在内部作为数据库,以确保不违反外键约束。
共享
用于密钥共享