1

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

我有两个不同的数据库,我需要更新两个数据库上的表。我们想要数据一致性。我更新了第一个数据库中的表,然后在更新第二个数据库时出现错误。那么在这种情况下我能做些什么呢?

我想把所有的东西都放在一个事务中,如果我有一个例外,我坚持我可以回滚。但他们说,由于有 2 个不同的数据库,不可能将它们放在同一个事务中。我不确定我是否理解正确,但我找不到其他解决方案。

现在我在问什么。

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

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

4

1 回答 1

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
于 2016-03-21T13:09:50.473 回答