Begin Transaction:開(kāi)始一個(gè)事務(wù);
Commit Transaction:提交事務(wù);
Rollback Transaction:回滾事務(wù)。
其中Commit Transaction 與Rollback Transaction 都必須有對(duì)應(yīng)的Begin Transaction 才能正確被執(zhí)行。
如:
Begin Tran
……
Rollback Tran
Commit Tran
以上事務(wù)只執(zhí)行了回滾操作。執(zhí)行Commit Tran系統(tǒng)會(huì)返回3902錯(cuò)誤,即@@Error=3902,COMMIT TRANSACTION 請(qǐng)求沒(méi)有對(duì)應(yīng)的 BEGIN TRANSACTION。
Begin Tran
……
Commit Tran
Rollback Tran
以上事務(wù)員執(zhí)行了提交事務(wù)操作。執(zhí)行Rollback Tran系統(tǒng)會(huì)返回3903錯(cuò)誤,即@@Error=3903,ROLLBACK TRANSACTION 請(qǐng)求沒(méi)有對(duì)應(yīng)的 BEGIN TRANSACTION。
實(shí)例:使用@@Error返回值來(lái)控制回滾
設(shè)有表a,有字段num (int),name (varchar(20));表b,有字段num (int),Add (varchar(50))。以下是一個(gè)存儲(chǔ)過(guò)程,使用了@@Error的返回值來(lái)控件事件回滾:
CREATE PROCEDURE [dbo].[TranTest] @num int,@name varchar(20),@Add varchar(20) AS DECLARE @ErrorA int,@ErrorB int begin transaction aa insert into a values(@num,@name) SELECT @ErrorA = @@error insert into b values(@num,@Add) SELECT @ErrorB = @@error if @ErrorA>0 or @ErrorB>0 begin Rollback transaction aa end else commit transaction aa GO
或
CREATE PROCEDURE [dbo].[TranTest] @num int,@name varchar(20),@Add varchar(20) AS DECLARE @Err int begin transaction aa insert into a values(@num,@name) if @@error>0 begin SELECT @Err = 1 end insert into b values(@num,@Add) if @@error>0 begin SELECT @Err = 1 end if @Err>0 begin Rollback transaction aa end else commit transaction aa GO
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
