我遇到现有数据库代码(触发器)的问题,该代码调用使用NOTIFY命令的函数触发器,prepared transaction的上下文不支持该命令。
我的问题很简单:从函数触发器,有没有办法检测我们是否处于准备好的事务的上下文中?
提前致谢。
答案 0 :(得分:1)
无法检测到当前事务将使用准备好的事务和两阶段提交进行提交,因为您尚未PREPARE
进行事务处理;事务不知道它会在你的触发器运行之前进行两阶段提交。 PostgreSQL不要求你BEGIN TRANSACTION FOR TWO PHASE COMMIT
(假想的语法)或类似的东西。
您可以测试max_prepared_transactions
> pg_settings
中的0,以查看准备好的交易是否已启用,但是无法知道2PC是否会被使用直到它发生。