最近在一次采访中我被问到了一个问题。问题是:
我有两个不同的数据库,我需要更新两个数据库上的表。我们 希望数据一致。我在第一个数据库中更新了表,然后是 更新第二个数据库我收到一个错误。那我该怎么办? 情况?
我想在一个事务中占用所有内容,如果我得到一个例外,我认为我可以回滚。但是他们说因为拥有2个不同的数据库,所以不可能在相同的交易中使用它们。我不确定我是否理解正确,但我找不到其他解决方案。
现在我要问的是。
1)是否可以在一个事务中对两个不同的数据库进行两次查询?正如我在一些帖子中所读到的那样,但是在他们说了之后我无法确定。
2)如果无法在事务中管理它们,我该如何在第一个数据库中回滚更改。
答案 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