同一数据库上的 Postgres AUTONOMOUS_TRANSACTION 等效项

问题描述 投票:0回答:1

我目前正在开发一个 SpringBatch 应用程序,该应用程序应该插入一些日志,以防发生某种类型的错误。问题是,如果 BatchJob 失败,它会自动回滚已完成的所有操作,这很完美,但它也会回滚错误日志。

我需要在使用 PostgreSQL 时实现类似于 Oracle 的 AUTONOMOUS_TRANSACTION 的功能(14)。

我见过 DBLINK,它似乎是唯一接近替代方案的东西,但我发现了一些问题:

  • 我需要避免连接字符串,因为数据库主机/端口/名称在不同环境中会发生变化,这可能吗?我需要将数据保存在同一个数据库中,从技术上讲,我不需要连接到任何其他数据库,而是使用调用连接。

  • 是否可以创建一个函数/过程来创建所有事情,而我只需将其称为Java端?也许这样我可以以某种方式将连接数据作为参数传递,以防万一无法避免。

在最好的情况下,我可以做类似的事情:

dblink_exec(text sql);

不带参数的情况认为执行的数据库相同。

问题是我需要在不指定任何连接数据的情况下完成此操作,这将位于执行数据库上的函数内部,处于相同的模式中......该函数将从一个环境传递到下一个环境,并且代码需要同样,必须避免任何所需的名称/用户/通行证,因为它们会根据环境而改变。因为从技术上讲是在相同的数据库和模式中进行的,所以可以推断出它们。

提前致谢!

目前我还没有尝试任何事情,我正在尝试先获取一些信息。

postgresql transactions dblink postgresql-14
1个回答
0
投票

您有机会解决这个问题吗? 我也快绝望了

亲切的问候

a

© www.soinside.com 2019 - 2024. All rights reserved.