2009-06-10 39 views
1

最近this問題發佈了關於在一般情況下交易的定義。這個問題的一個常見答案是交易應該是一個原子工作單元事務處理:什麼時候發生回滾?

我的問題涉及這種原子性(我認爲)我經常在SQL存儲過程中看到顯式調用ROLLBACK。

通常是事務處理系統的通用要求是明確要求回滾嗎?

如果提交時發生某些錯誤,是否會自動回滾?

回答

2

在TP系統中,回退可發生基於:

  • 的顯式請求,如呼叫回滾或類似
  • 任何未捕獲的異常或錯誤。這些可能包括:通信的與參與者
    • 損失(在分佈式事務)
    • 無效或超出範圍值或參數
    • 超時,因無法獲得例如一個鎖或用戶延遲。
  • 兩階段提交分佈式事務,參與者之一的失敗表決提交

像你說的「提交時」不一定會發生回退,由我猜你意思是「試圖犯下時」。開始後,交易可隨時回滾。

+0

是的,我的意思是一個嘗試提交,這是一個區別,我真的應該做出指出它thants – Crippledsmurf 2009-06-10 11:06:55

0

在某些情況下,由於觸發器或約束衝突,回滾將自動發生。在其他人(如你所見過的)中,存儲過程本身就是回滾。艾登是正確的,自動提交變化。

相關問題