修正一下自己
以前寫存儲過程少,對於事務的認識不深
以前總這樣寫:
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或者程序中都要有這種意識,以保證語句塊執行的安全性