多个数据库的事务回滚

时间:2016-03-21 12:46:57

标签: database oracle distributed-database data-consistency

最近在一次采访中我被问到了一个问题。问题是:

  

我有两个不同的数据库,我需要更新两个数据库上的表。我们   希望数据一致。我在第一个数据库中更新了表,然后是   更新第二个数据库我收到一个错误。那我该怎么办?   情况?

我想在一个事务中占用所有内容,如果我得到一个例外,我认为我可以回滚。但是他们说因为拥有2个不同的数据库,所以不可能在相同的交易中使用它们。我不确定我是否理解正确,但我找不到其他解决方案。

现在我要问的是。

1)是否可以在一个事务中对两个不同的数据库进行两次查询?正如我在一些帖子中所读到的那样,但是在他们说了之后我无法确定。

2)如果无法在事务中管理它们,我该如何在第一个数据库中回滚更改。

1 个答案:

答案 0 :(得分:0)

我认为您可以在过程中执行跨数据库操作,并将UPDATE语句包含在事务块中,如

create procedure usp_update
as
begin
begin trans
update table1 set col1=value where col2=value;
update db2..table1 set col1=value where col2=value; //cross DB update
commit;
if(error)
rollback;
end