天天看點

事務

1、begin transaction:開始事務。

2、commit transaction:送出事務。

3、rollback transaction:復原事務。

基本用法

begin tran -- 開啟事務,transcation 的簡寫

2 declare @errorNo int --定義變量,用于記錄事務執行過程中的錯誤次數

3 set @errorNo=0

4 begin try

5 update Student set C_S_Id='2' where S_StuNo='003'

6 set @errorNo=@errorNo+@@ERROR

7 select 'S_StuNo=003 已經修改啦'

8

9 update Student set C_S_Id='3' where S_StuNo='002'

10 set @errorNo=@errorNo+@@ERROR -- @@ERROR 系統全局變量,記錄錯誤次數,出現一次錯誤 @@ERROR 值+1

11 select 'S_StuNo=002 已經修改啦'

12

13 if(@errorNo>0)

14 begin

15 --抛出自定義的異常,在最後的catch塊中統一處理異常

16 RAISERROR(233333,16,3)

17 end

18

19 end try

20 begin catch

21 select ERROR_NUMBER() errorNumber, --錯誤代碼

22 ERROR_SEVERITY() errorSeverity, --錯誤嚴重級别,級别小于10 try catch 捕獲不到

23 ERROR_STATE() errorState, --錯誤狀态碼

24 ERROR_PROCEDURE() errorProcedure, --出現錯誤的存儲過程或觸發器的名稱

25 ERROR_LINE() errorLine, --發生錯誤的行号

26 ERROR_MESSAGE() errorMessage --錯誤的具體資訊

27

28 if(@@trancount>0) -- @@trancount 系統全局變量,事務開啟 @@trancount 值+1,判斷事務是否開啟

29 begin

30 rollback tran; -- 復原事務

31 end

32 end catch

33

34 if(@@trancount>0)

35 begin

36 commit tran; -- 送出事務

37 end

38

39 select * from Student