在处理 DAL 类型的系统时,我遇到了保存点安全问题:在进程开始时创建保存点,并在成功完成时释放或在错误时回滚。
然而,虽然这不正常,但整个事务有可能被正在运行的进程提交(或回滚)。这将删除我们试图释放/回滚的保存点。这个问题可以通过在发布/回滚周围放置另一个保存点来解决,但显然不可能出现SAVEPOINT
错误的事务。
有没有办法对此进行最大努力的处理,以便保存点在存在时被释放/回滚,否则不会发生任何事情?根据In Postgres,如何获取当前定义的保存点列表?当时没有办法去 LBYL,现在似乎也没有办法了。