91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • SQLServer在存儲過程中編寫事務處理代碼的方法有哪些

SQLServer在存儲過程中編寫事務處理代碼的方法有哪些

發布時間:2021-08-18 11:37:08 來源:億速云 閱讀:204 作者:chen 欄目:數據庫

這篇文章主要介紹“SQLServer在存儲過程中編寫事務處理代碼的方法有哪些”,在日常操作中,相信很多人在SQLServer在存儲過程中編寫事務處理代碼的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SQLServer在存儲過程中編寫事務處理代碼的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

  在編寫SQLServer事務相關的存儲過程代碼時,經常看到下面這樣的寫法:

  begintranupdatestatement1...updatestatement2...deletestatement3...committran

  這樣編寫的SQL存在很大隱患。請看下面的例子:

  createtabledemo(idintnotnull)gobegintraninsertintodemovalues(null)insertintodemovalues(2)committrango

  執行時會出現一個違反notnull約束的錯誤信息,但隨后又提示(1row(s)affected)。我們執行select*fromdemo后發現insertintodemovalues(2)卻執行成功了。這是什么原因呢原來SQLServer在發生runtime錯誤時,默認會rollback引起錯誤的語句,而繼續執行后續語句。

  SQLServer在存儲過程中編寫事務處理代碼有哪些方法

  如何避免這樣的問題呢?有三種方法:

  1.在事務語句最前面加上setxact_aborton

  setxact_abortonbegintranupdatestatement1...updatestatement2...deletestatement3...committrango

  當xact_abort選項為on時,SQLServer在遇到錯誤時會終止執行并rollback整個事務。

  2.在每個單獨的DML語句執行后,立即判斷執行狀態,并做相應處理。

  begintranupdatestatement1...if@@error<>0beginrollbacktrangotolabendenddeletestatement2...if@@error<>0beginrollbacktrangotolabendendcommittranlabend:go

  3.在SQLServer2005中,可利用try...catch異常處理機制。

  begintranbegintryupdatestatement1...deletestatement2...endtrybegincatchif@@trancount>0rollbacktranendcatchif@@trancount>0committrango

  下面是個簡單的存儲過程,演示事務處理過程。

  createproceduredbo.pr_tran_inprocasbeginsetnocountonbegintranupdatestatement1...if@@error<>0beginrollbacktranreturn-1enddeletestatement2...if@@error<>0beginrollbacktranreturn-1endcommittranreturn0endgo

到此,關于“SQLServer在存儲過程中編寫事務處理代碼的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇信县| 府谷县| 长海县| 舒城县| 巍山| 吴忠市| 宜川县| 鹤庆县| 南丹县| 城口县| 稷山县| 理塘县| 县级市| 宁南县| 黄大仙区| 石嘴山市| 伊川县| 朝阳区| 姜堰市| 夏河县| 临安市| 蓝山县| 忻州市| 黑河市| 蒲城县| 临沧市| 墨竹工卡县| 洪洞县| 阿拉善右旗| 遂宁市| 贵定县| 临沭县| 江油市| 淳安县| 海宁市| 科技| 凤翔县| 镇坪县| 宜章县| 洪江市| 新巴尔虎右旗|