【问题标题】:PSQL: Row locking via Select FOR UPDATEPSQL:通过 Select FOR UPDATE 锁定行
【发布时间】:2016-12-01 21:55:05
【问题描述】:

我正在尝试使用SELECT FOR UPDATE psql 命令https://www.postgresql.org/docs/9.1/static/explicit-locking.html通过数据库实现锁定

除了这个命令允许基于数据库行的锁定之外,我找不到太多关于这样做的文档

我想知道如果线程 1 先执行 SELECT FOR UPDATE 会发生什么,然后线程 2 很快就会出现并尝试执行相同的命令。线程 2 是否被阻塞,直到线程 1 中的数据库事务提交或回滚?

【问题讨论】:

  • 你为什么不试试呢?您可以通过打开 2 个与 PostgreSQL 数据库的会话并在事务中按顺序执行命令来模拟这种情况,而不是线程。

标签: sql multithreading postgresql locking psql


【解决方案1】:

是的,Thread2 将一直等到 Thread1 完成。

您可以使用NOWAITSKIP LOCKS 来防止操作等待(请参阅SELECT in the documentation)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2016-03-30
    相关资源
    最近更新 更多