【问题标题】:Is there a way to manually lock/unlock a table row in PostgreSQL that does not rely on transactions?有没有办法手动锁定/解锁 PostgreSQL 中不依赖事务的表行?
【发布时间】:2021-04-22 19:38:24
【问题描述】:

我是数据库锁定的新手,所以请多多包涵。

我的 SELECT 语句在一个文件中,而我的 UPDATE 语句在另一个文件中。两者都在文件开头建立连接,然后在最后断开连接。我要做的是在 select 语句中锁定表行,如果用户取消或更新,则释放该锁定。

我尝试过咨询锁,但当我断开连接时它们会解锁。我尝试过的所有其他锁都是这样做的。

有没有一种方法可以在我当前的数据库结构中实现我想要的,或者我需要重写整个东西还是用我的数据库中的 row_locked 命名布尔列之类的东西来强制它?

提前感谢您的帮助:)

【问题讨论】:

    标签: database postgresql locking


    【解决方案1】:

    如果您需要跨事务和会话保留该信息,那么是的,您需要一个存储该信息的列。

    虽然我不会使用 boolean,但可以使用可空的 timestamp 列,以便您可以看到何时该行被锁定(null 表示“未锁定”,@987654324 @ 表示“锁定”)。这对于清理“废弃的锁”非常有用。

    【讨论】:

    • 为失败而设计 ;-) 因为有一天出了问题,记录会被永远锁定。
    • 感谢您的回答和建议!那就是我接下来要做的:)
    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多