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