2017-02-16 285 views
0

目前我一直在使用雙重入場系統的會計程序。在創建記錄時,一個賬戶被借記,另一個賬戶被記入賬戶,所以他們的金額必須在數據庫中更新。碰撞後處理交易

比方說,在數據庫中更新第一個帳戶之後,系統崩潰並且第二個帳戶的金額不變;這種情況會導致數據不一致,所以我的問題是:處理這個問題的最好方法是什麼?數據庫恢復後應立即撤消第一筆交易還是繼續嘗試更新第二個帳戶?

我正在用mysql的hibernate和spring框架。提前致謝。

+0

可能相關:http://stackoverflow.com/questions/8352870/will-mysql-transactions-rollback系統崩潰 –

+0

崩潰可能會發生,並且可能是混亂的,但請記住,如果您的Java應用程序崩潰,那麼MySQL中的事務仍應該是原子的,即整個事情成功或者沒有發生在所有。 –

回答

1

看來你需要分佈式事務和兩階段提交。

the example 2個數據源(似乎是你的情況下)和一個更example爲數據源加上消息隊列