今天講下T-Sql語法中事務的用法,事務在項目中通常用的不多,主要用於轉帳,或是一些多表操做,第一步完成不了滾回,不執行接下的步驟。要麼都不完成要麼都完成,這是事務的特徵。ui
語法很簡單,示例代碼以下:spa
1 create database Transaction_9_30 2 use Transaction_9_30 3 drop table Zanghui 4 create schema Jago 5 create table Jago.Zhanghui 6 ( 7 ID int primary key, 8 Balance int not null
9 ) 10 insert into Jago.Zhanghui(ID,Balance) values(1,1000); 11 insert into Jago.Zhanghui(ID,Balance) values(2,3000); 12 update Jago.Zhanghui set Balance=1000 where ID=1; 13 update Jago.Zhanghui set Balance=3000 where ID=2; 14 select *from Jago.Zhanghui 15
16 begin transaction t1; --例子:轉賬操做;一個表(id,balance)
17 declare @v bigint; --要求利用事務:
18 set @v = 0; 19 update Jago.Zhanghui set Balance=Balance-200 where ID=1; 20 if not exists(select *from Jago.Zhanghui where ID=1) 21 begin
22 --raiserror('asdfsdf',16,-1)
23 set @v = @v + 1; 24 end
25 --set @v = @v + @@error;
26 print @v; 27 update Jago.Zhanghui set Balance=Balance+200 where ID=2; 28 if not exists(select *from Jago.Zhanghui where ID=2) 29 begin
30 --update Jago.Zhanghui set Balance=Balance+200 where ID=1;
31 --raiserror('asdfsdf',16,-1)
32 set @v = 1; 33 end
34
35 if(@v = 0) 36 begin
37 print @v
38 commit tran t1; 39 end
40 else
41 begin
42 print @v
43 rollback tran t1; 44 end
45 --commit transaction t1
46