2016-03-21 148 views
1

最近在訪問中我被問了一個問題。問題是:多個數據庫的事務回滾

我有兩個不同的數據庫,我需要更新兩個數據庫上的表。我們 想要數據一致性。我在第一個數據庫更新表,然後 更新第二個數據庫我得到一個錯誤。那麼我能在 的情況下做些什麼呢?

我認爲所有的事務都在一個事務中,如果我遇到了異常,我希望能夠回滾。但是他們說因爲有兩個不同的數據庫,所以不可能在同一個事務中使用它們。我不確定我是否理解正確,但我找不到其他解決方案。

現在我在這裏問什麼。

1)是否有可能在一次交易中對兩個不同的數據庫進行兩次查詢?正如我在一些帖子中看到的那樣,但是我不能確定他們說了什麼。

2)如果無法在事務中管理它們,我該如何回滾第一個數據庫中的更改。

+0

這是一個有點在我看來,一個垃圾問題。我可能會遵循......我不會提交任何一個會話,直到由於這個限制完成所有步驟。因爲這個原因,我只會回滾db1,因爲db2不會因更新語句中的失敗而改變。 –

+0

閱讀關於數據庫鏈接,XA(分佈式事務)。這是一個相當廣泛的話題。 – ibre5041

回答

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