我想知道是否有任何解锁或释放同一事务锁定的命令。
伪代码
FUNCTION
TRANSACTION
LOOP
TABLE LOCK
table operations...
"TABLE UNLOCK WANTED"
END
END OF TRANSACTION
END OF FUNCTION
函数查询可能需要一段时间,因为LOOP可能很大,所以我希望能够在事务完成之前解锁。
答案 0 :(得分:5)
不,这是不可能的。锁定一直持续到交易结束,没有例外。
因此,你需要:
使用非标准锁,如咨询锁,这需要每个人检查并尊重它;或
在外部事务完成之前,在自动提交的事务中执行您的工作。在PostgreSQL中,缺乏自主的子事务支持意味着你必须使用dblink。