我目前正在开发一个 SpringBatch 应用程序,该应用程序应该插入一些日志,以防发生某种类型的错误。问题是,如果 BatchJob 失败,它会自动回滚已完成的所有操作,这很完美,但它也会回滚错误日志。
我需要在使用 PostgreSQL 时实现类似于 Oracle 的 AUTONOMOUS_TRANSACTION 的功能(14)。
我见过 DBLINK,它似乎是唯一接近替代方案的东西,但我发现了一些问题:
我需要避免连接字符串,因为数据库主机/端口/名称在不同环境中会发生变化,这可能吗?我需要将数据保存在同一个数据库中,从技术上讲,我不需要连接到任何其他数据库,而是使用调用连接。
是否可以创建一个函数/过程来创建所有事情,而我只需将其称为Java端?也许这样我可以以某种方式将连接数据作为参数传递,以防万一无法避免。
在最好的情况下,我可以做类似的事情:
dblink_exec(text sql);
不带参数的情况认为执行的数据库相同。
问题是我需要在不指定任何连接数据的情况下完成此操作,这将位于执行数据库上的函数内部,处于相同的模式中......该函数将从一个环境传递到下一个环境,并且代码需要同样,必须避免任何所需的名称/用户/通行证,因为它们会根据环境而改变。因为从技术上讲是在相同的数据库和模式中进行的,所以可以推断出它们。
提前致谢!
目前我还没有尝试任何事情,我正在尝试先获取一些信息。
您有机会解决这个问题吗? 我也快绝望了
亲切的问候
a