代码之家  ›  专栏  ›  技术社区  ›  Sriram Umapthy

PostgreSql行级锁

  •  1
  • Sriram Umapthy  · 技术社区  · 2 年前

    我正在努力理解Postgresql行级锁,有人能帮我理解何时使用每种类型的锁吗。

         FOR UPDATE; FOR NO KEY UPDATE; FOR SHARE; FOR KEY SHARE;
    

    我试着查看文档,但仍然无法理解其中的区别,也不知道何时使用什么以及如何使用它。

    我希望有人能帮助我了解每把锁的使用情况,并明确何时选择每把锁。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Laurenz Albe    2 年前
    • 锁定一排 FOR UPDATE 模式(如果计划删除或更新属于主键或唯一约束的列)

    • 锁定一排 FOR NO KEY UPDATE 模式下,如果计划仅更新不属于主键或唯一约束的列

    • 锁定一排 FOR SHARE 模式,如果你不想让其他人修改它(这是一个非常罕见的要求)

    • 锁定一排 FOR KEY SHARE 模式,如果您想阻止其他人删除属于主键或唯一约束的行或更新列(这也是一个非常罕见的要求)

    很难想出一个需要您使用的用例 共享 用于密钥共享 明确地它们在内部作为数据库,以确保不违反外键约束。

    推荐文章