2014-01-23 39 views
1

我想知道是否有任何命令解锁或释放同一事务所产生的锁定。手动释放Postgres LOCK

伪代码

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

功能查询可能需要一段时间,因为循环可能会很大,所以我想能解开前的交易完全完成。

回答

4

不,这是不可能的。锁保持到交易结束,没有例外。

因此,你需要:

  • 使用非标准锁像一个咨询锁,这需要大家来检查它,尊重它;或者

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