嵌套事務(wù)的回滾與提交

嵌套事務(wù)的回滾與提交

ID:10003029

大?。?9.00 KB

頁數(shù):10頁

時(shí)間:2018-05-20

嵌套事務(wù)的回滾與提交_第1頁
嵌套事務(wù)的回滾與提交_第2頁
嵌套事務(wù)的回滾與提交_第3頁
嵌套事務(wù)的回滾與提交_第4頁
嵌套事務(wù)的回滾與提交_第5頁
資源描述:

《嵌套事務(wù)的回滾與提交》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、嵌套事務(wù)的回滾與提交一、嵌套事務(wù)和事務(wù)保存點(diǎn)的錯(cuò)誤處理1、對(duì)于嵌套事務(wù)。1.外部起事務(wù),內(nèi)部起事務(wù),內(nèi)外都有TryCatch內(nèi)部出錯(cuò):如果內(nèi)部事務(wù)出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。外部出錯(cuò):如果外部事物出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。注:如果內(nèi)部的事務(wù)不起事務(wù)名稱,內(nèi)部如果出錯(cuò),將會(huì)回滾掉會(huì)話中的全部事務(wù),而且報(bào)異常。2.外部起事務(wù),內(nèi)部起事務(wù),內(nèi)部沒有TryCatch內(nèi)部出錯(cuò):如果內(nèi)部事務(wù)出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存

2、在,但是之后的操作繼續(xù)執(zhí)行。外部出錯(cuò):如果內(nèi)部事務(wù)出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。3.外部起事務(wù),內(nèi)部不起事務(wù),但有TryCatch。內(nèi)部出錯(cuò):外部事物正常提交,外部事物不會(huì)進(jìn)入ROLLBACK,內(nèi)部出錯(cuò)之后的記錄也會(huì)正常執(zhí)行。內(nèi)部操作中,Try部分在錯(cuò)誤出現(xiàn)之前的操作正常,Try部分在操作之后的操作不執(zhí)行,然后進(jìn)入Catch塊中執(zhí)行操作。外部出錯(cuò):內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。4.外部起事務(wù),內(nèi)部不起事務(wù),但沒有TryCatch.內(nèi)部出錯(cuò):如果內(nèi)

3、部事務(wù)出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。外部出錯(cuò):如果內(nèi)部事務(wù)出錯(cuò),內(nèi)部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續(xù)執(zhí)行。5.外部不起事務(wù),內(nèi)部起事務(wù),但有TryCatch.內(nèi)部出錯(cuò):外部操作被正常執(zhí)行,內(nèi)部ROLLBACK操作前全部回滾,之后的操作正常執(zhí)行。外部出錯(cuò):出錯(cuò)操作之前的操作不會(huì)回滾,出錯(cuò)之后的操作不執(zhí)行,跳入Catch塊中,內(nèi)部事務(wù)不會(huì)回滾。6.外部不起事務(wù),內(nèi)部起事務(wù),但沒有TryCatch.內(nèi)部出錯(cuò):外部操作被正常執(zhí)行,內(nèi)部ROLLBACK操作前全部回滾。

4、由于沒有catch塊,所以外部操作全部執(zhí)行。外部出錯(cuò):內(nèi)部事務(wù)正常提交,外部只有當(dāng)條記錄失敗,其他操作正常執(zhí)行,但是有嚴(yán)重錯(cuò)誤報(bào)出來。對(duì)于事務(wù)保存點(diǎn)事務(wù)保存點(diǎn)只有SAVE和ROLLBACK操作,當(dāng)外部調(diào)用內(nèi)部保存點(diǎn),內(nèi)部出現(xiàn)問題不影響外部事務(wù),外部操作正常執(zhí)行。當(dāng)外部操作出現(xiàn)問題時(shí),內(nèi)部所有操作都回滾掉。如:外部起事務(wù),內(nèi)部起保存點(diǎn),內(nèi)外都有TryCatch內(nèi)部出錯(cuò):外部操作正常,不進(jìn)入Catch,內(nèi)部事務(wù)回滾到保存點(diǎn),之后的繼續(xù)執(zhí)行。外部出錯(cuò):如果外部事物在保存點(diǎn)之前出現(xiàn)異常,那么外部和內(nèi)部所有操作回滾。如果外部事物在保存點(diǎn)之前出現(xiàn)異常,由于保

5、存點(diǎn)已經(jīng)提交了事務(wù),導(dǎo)致外部rollback找不到對(duì)應(yīng)的事務(wù)點(diǎn)。二、事務(wù)的嵌套PRINT'Trancountbeforetransaction:'+CAST(@@TRANCOUNTaschar(1))BEGINTRANPRINT'AfterfirstBEGINTRAN:'+CAST(@@TRANCOUNTaschar(1))BEGINTRANPRINT'AftersecondBEGINTRAN:'+CAST(@@TRANCOUNTaschar(1))COMMITTRANPRINT'AfterfirstCOMMITTRAN:'+CAST(@@TRA

6、NCOUNTaschar(1))COMMITTRANPRINT'AftersecondCOMMITTRAN:'+CAST(@@TRANCOUNTaschar(1))在結(jié)果中,可以看到每一個(gè)BEGINTRAN語句都會(huì)使@@TRANCOUNT增加1并且每一個(gè)COMMITTRAN語句都會(huì)使其減少1。如前所述,一個(gè)值為0的@@TRANCOUNT意味著沒有打開的事務(wù)。因此,在@@TRANCOUNT值從1降到0時(shí)結(jié)束的事務(wù)發(fā)生在外層事務(wù)提交的時(shí)候。因此,每一個(gè)內(nèi)部事務(wù)都需要提交。由于事務(wù)起始于第一個(gè)BEGINTRAN并結(jié)束于最后一個(gè)COMMITTRAN,因此

7、最外層的事務(wù)決定了是否完全提交內(nèi)部的事務(wù)。如果最外層的事務(wù)沒有被提交,其中嵌套的事務(wù)也不會(huì)被提交。鍵入并執(zhí)行以下批來檢驗(yàn)事務(wù)回滾時(shí)所發(fā)生的情況:BEGINTRANPRINT'After1stBEGINTRAN:'+CAST(@@TRANCOUNTaschar(1))BEGINTRANPRINT'After2ndBEGINTRAN:'+CAST(@@TRANCOUNTaschar(1))BEGINTRANPRINT'After3rdBEGINTRAN:'+CAST(@@TRANCOUNTaschar(1))UPDATEData1SETvalue1=

8、1000000WHEREId=1COMMITTRANPRINT'AfterfirstCOMMITTRAN:'+CAST(@@TRANCO

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。