日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[20131014] 出现错误,显示事务没有回滚

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [20131014] 出现错误,显示事务没有回滚 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[20131014] 出現錯誤,顯示事務沒有回滾

測試代碼:

SET XACT_ABORT OFF goBEGIN TRANBEGIN TRYDELETE dbo.T SELECT * FROM [不存在的表] -- 事務還在,T表被鎖--SELECT 1/0 --跳到Catch中 回滾PRINT '11'END TRYBEGIN CATCHPRINT 'ROLLBACK'SELECT @@ERROR ROLLBACKEND CATCH COMMIT /*問題:1.SELECT * FROM [不存在的表] 為什么會直接跳出,不完成事務?2.SELECT * FROM [不存在的表] 是否屬于編譯錯誤?3.修改為SET XACT_ABORT ON 可以回滾,如果SELECT * FROM [不存在的表]是編譯錯誤 那么聯機文檔中:編譯錯誤(如語法錯誤)不受 SET XACT_ABORT 的影響。如何解釋? */

問題:

  在一個session中運行以上代碼,然后在另外一個session運行 select * from T,發現select語句被堵塞

原因:

? ? ? sql 編譯的流程?Parse->Bind->Optimize->Execute

? ? ? 一般認為從Parse到Optimize 是編譯階段,Execute是執行階段

  猜測try catch不會再Bind和Optimize階段出現的錯誤進行捕獲,以上出現的錯誤可能不被認為是編譯錯誤,所以,使用 xact 為on是可以成功自動回滾

解決方法:

? ? ?使用?SET XACT_ABORT ON 來回滾事物

posted on 2013-10-14 13:38 Fanr_Zh 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/Amaranthus/p/3368246.html

總結

以上是生活随笔為你收集整理的[20131014] 出现错误,显示事务没有回滚的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。