我有两个PostgreSQL数据库。我将请求发送到一个数据库以执行一些DML操作,基于成功响应,我将向第二个数据库发送请求以执行一些DML操作。如果第二次操作失败,我该如何回滚第一次DB DML操作。
希望你们都明白我的问题。
答案 0 :(得分:0)
标准回滚不适用,因为您需要语句1的结果并将其用于第二个语句。您需要在sql外的应用程序中执行此操作。
对于'人工回滚',您需要缓存由操作影响的行的原始值
该流程将在以下几行中发挥作用:
select * from table where the_Where; //statement 1
update db1.table set updates where the_Where;
--if success--
update db2.table set updates where another_Where;
--if failure--
update table set (data from statement 1) where the_Where;