手动释放Postgres LOCK

时间:2014-01-23 09:44:55

标签: postgresql transactions locking

我想知道是否有任何解锁或释放同一事务锁定的命令。

伪代码

FUNCTION
    TRANSACTION
        LOOP
            TABLE LOCK
            table operations...
            "TABLE UNLOCK WANTED"
        END
    END OF TRANSACTION
END OF FUNCTION

函数查询可能需要一段时间,因为LOOP可能很大,所以我希望能够在事务完成之前解锁。

1 个答案:

答案 0 :(得分:5)

不,这是不可能的。锁定一直持续到交易结束,没有例外。

因此,你需要:

  • 使用非标准锁,如咨询锁,这需要每个人检查并尊重它;或

  • 在外部事务完成之前,在自动提交的事务中执行您的工作。在PostgreSQL中,缺乏自主的子事务支持意味着你必须使用dblink。