有没有办法在不依赖事务的 PostgreSQL 中手动 lock/unlock 一个 table 行?

Is there a way to manually lock/unlock a table row in PostgreSQL that does not rely on transactions?

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

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

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

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

在此先感谢您的帮助:)

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

不过我不会使用 boolean,而是可以为 null 的 timestamp 列,以便您可以看到 何时 该行被锁定(null 表示“未锁定”,not null 表示“锁定”)。这对于清理“废弃的锁”非常有用。