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