The only documentation is the code itself
posted on 2005-12-19 16:02 DenisLing 閱讀(3220) 評論(5) 編輯 收藏
答案是不會的,二級事務的rollback只針對自己。 ------------------------------------------------ 但你下文中也說了:二級事務的rollback最終會使整個事務rollback啊. 該怎么理解你上面這句話? 回復 更多評論
如你的例子, 在兩個二級事務中, 若取錢的成功了,而在存入的時候rollback了,這時整個transaction會被rollback,如此,在取錢這個二級的會被rollback嗎? 回答若'Y', 這和放在一個事務中有啥區別呢? 回復 更多評論
上面的朋友可能沒有理解我的意思!我的例子可能有點問題! 其實這有一個經典的旅行定票的問題! 比如我要到臺灣旅游,我可能要如下去做 1,買到上海的汽車票, 2,在上海買去香港的飛機票, 3,在香港買去臺灣的飛機票, 4,買到目的旅游地的汽車票。 ok!現在就討論上面的問題,如果把整個過程看成是一個完成的事務,在以前的六種事務模型里面比如在第4步的時候沒有能夠買到到目的旅游地的汽車票,整個事務會回滾。 但是我們可能在第4步的時候還可以選擇做地鐵或打的等等。這也就是嵌套事務類型和上面的不同地方,可以把1,2,3,4分別看成是一個子事務,比如1的時候我沒有買到汽車票,可能我這個買汽車票的事務會回滾,但是這并步影響外面的事務,可們可以選擇做火車等等其它途徑。如果1最后沒有能夠提交事務,那么總的事務會回滾,(但是在1事務回滾的時候并不會導致外層事務回滾)。其他幾步都是一樣的道理。 不知道這個例子是否明白點!有問題我們再討論! 回復 更多評論
上面的說法完全看不懂 就本人的理解在SRING默認的回滾規則下 在2級事務中如果回滾了數據但是沒有拋出異常 1級事務還是回繼續執行后面的2級事務 如果2級事務在回滾過程中拋出了異常 那么1級事務也馬上回滾 但是如果前面的2級事務如果已經提交了 那么就算后面的2級事務回滾并拋出異常也只會導致1級事務回滾 前面已經提交的2級事務不能回滾了 (因為就我知道的程序是不能回滾已經提交的 只能通過數據庫系統日志恢復了) 回復 更多評論
@javafox你兩說的好像是一樣的 回復 更多評論
Powered by: BlogJava Copyright © DenisLing