事務誤解

修正一下自己

以前寫存儲過程少,對於事務的認識不深

以前總這樣寫:

begin tran

       (語句insert、delete 、update之類的)

if @@error=0

begin

       select '執行成功'

       commit tran

end

else

begin

      select '執行出錯'

      rollback tran

end

這是憑印象寫的,後來發現大錯特錯會了、這樣會釀成大錯的

@@error是個全局變量,並不能保證整個存儲過程的語句是否全執行成功了

 

其實應該這麼寫纔對

 declare @errorCount int--定義錯誤計數器
 set @errorCount =0 --初始爲0

begin tran

       (語句insert、delete 、update之類的,在每句後面加上set @errorCount = @errorCount + @@error)

if @errorCount =0

begin

       select '執行成功'

       commit tran

end

else

begin

      select '執行出錯'

      rollback tran

end

 

按道理來說只要是含有更新數據(insert delete update drop、、)的行爲都應該使用事務處理,

無論是在sql或者程序中都要有這種意識,以保證語句塊執行的安全性

發佈了31 篇原創文章 · 獲贊 0 · 訪問量 1955
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章