我参与的项目依赖于外部服务(SOA),默认情况下会启用事务管理。但是,如果出现错误,回滚将导致一些关键数据丢失,如“支付捕获日志记录”(例如,如果代码在捕获后失败)。
在当前事务之外运行查询是否有实用的方法?无论出现什么异常,我总是希望记录外部呼叫。我不想为约定实现外部日志服务。保存点不会带你到那里,也许那个时刻需要另一个数据库连接?
答案 0 :(得分:2)
是否有实用的方法在当前事务之外运行查询?
PostgreSQL本身并不支持你想要的东西,autonomous (sub)transactions。
您可以使用dblink模拟它们,尽管是笨拙的。 dblink
完全符合您的建议;它从一个PostgreSQL服务器连接到另一个服务器。连接可以是连接到自己的服务器。
如果您可以在应用程序级别执行此操作,那么这样做通常会更好,但dblink肯定是一种选择。