postgres获得行级锁定

时间:2017-11-01 19:02:00

标签: postgresql locking

如何在Postgres中获取特定于行的锁?

根据文档,我可以获得锁,但我不想锁定整个表;我只关心监控给定事务中的特定

我的用例是我想:

  • 读一行
  • 执行一些(可能是昂贵的,可能是竞争条件的)操作,为另一个表准备新行
  • 当我终于准备好插入/更新这些新行时,我想确保没有其他进程能够击败我,所以我想我想:
    • 在我之前阅读的同一行获取行级锁定
    • 查看versionstate或类似列与我之前阅读时相同
    • 如果 相同,我想插入/更新到另一个表中,然后递增此version,然后释放锁
    • 如果它相同的version,那么我想中止 - 我不关心我可能的新/更新的行,它们是陈旧的我不会&# 39;我想保存它们(所以:什么也不做,释放锁)

但是,我不想在整个期间锁定整个桌子;我只是想锁定那一个特定的行。根据{{​​3}},我无法弄清楚如何做到这一点。 numerousblogpostsPostgres

我想要的只是一个示例查询,它向我展示了如何显式地进行行级锁定。

0 个答案:

没有答案