假设我需要执行 2 个步骤的 spring 批处理作业。步骤 1 是从 postgres 表中读取数据并更新同一个表中的值。第 2 步是从另一个 postgres 表中读取数据并更新此表。在这种情况下,我如何在工作级别实现事务?
也就是说,如果第二步失败,那么第一步应该回滚。
假设我需要执行 2 个步骤的 spring 批处理作业。步骤 1 是从 postgres 表中读取数据并更新同一个表中的值。第 2 步是从另一个 postgres 表中读取数据并更新此表。在这种情况下,我如何在工作级别实现事务?
也就是说,如果第二步失败,那么第一步应该回滚。
我不确定是否存在具有自动链式/多级事务处理的可靠工作(或在数据库端不需要大量资源)的解决方案
如果第二步失败,那么第一步应该回滚
好吧,您可以将这两个步骤合二为一:
性能会受到很大影响,因为表 B 上的读取将是单次读取,而基于表 a 的游标
我会采用这样的补偿策略
在Step 1之前放置BEGIN语句,在Step 2之后放置COMMIT语句。