【问题标题】:Database table row prevention for multiple users access多用户访问的数据库表行预防
【发布时间】:2014-10-01 01:26:23
【问题描述】:

我正在将 PostgreSQL 与 java spring 应用程序一起使用,并且要求是,如果任何用户访问表中的任何行,那么如果同一时间另一个用户将尝试访问同一行,那么该用户将收到类似该行已经在使用的警报由某人。

所以请任何人让我知道我需要在哪里工作才能实现这一目标,意味着

a) 数据库级别

b) 我的 spring java 应用程序级别。

如果您对此要求有任何想法,请与我分享。

在此先感谢您。

【问题讨论】:

标签: database spring postgresql


【解决方案1】:

看看Postgresql Explicit Locking,也许Row-level Locks部分对你有帮助。

【讨论】:

  • 好的,你有任何例子或示例吗,这个链接看起来像表标签锁
【解决方案2】:

在事务中,您可以通过SELECT FOR UPDATE 锁定查询中涉及的一行(或多行)。

SELECT *
  FROM YOUR_TABLE
 WHERE YOUR_CONDITION
   FOR UPDATE
   NOWAIT -- THIS IS OPTIONAL

如果添加NOWAIT 子句(如上所示),如果该行已被其他事务锁定,则会引发异常。

否则,它将等待(并冻结)直到另一个锁释放它自己(通过提交/回滚事务)并且此查询将获取一个新锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多