我正在尝试了解 Postgresql 行级锁,有人可以帮助我了解何时使用每种类型的锁。
FOR UPDATE; FOR NO KEY UPDATE; FOR SHARE; FOR KEY SHARE;
我尝试查看文档,但仍然无法理解其中的区别,也不知道何时使用什么以及它如何产生影响。
我期待有人能帮助我了解每种锁的用例,并让我清楚何时选择每种锁。
我正在尝试了解 Postgresql 行级锁,有人可以帮助我了解何时使用每种类型的锁。
FOR UPDATE; FOR NO KEY UPDATE; FOR SHARE; FOR KEY SHARE;
我尝试查看文档,但仍然无法理解其中的区别,也不知道何时使用什么以及它如何产生影响。
我期待有人能帮助我了解每种锁的用例,并让我清楚何时选择每种锁。
FOR UPDATE
如果您计划删除某行或更新属于主键或唯一约束的列,则将其锁定在模式中FOR NO KEY UPDATE
如果您计划仅更新不属于主键或唯一约束的列,则锁定模式中的行FOR SHARE
如果您不希望其他人修改它,则将行锁定在模式中(这是一个非常罕见的要求)FOR KEY SHARE
如果您想阻止其他人删除该行或更新属于主键或唯一约束的列(也是一种非常罕见的要求),请将行锁定在模式下很难想出一个需要您明确使用
FOR SHARE
和 的用例;FOR KEY SHARE
它们被视为内部数据库,以确保不违反外键约束。