今天讲下T-Sql语法中事务的用法,事务在项目中一般用的很少,主要用于转账,或是一些多表操作,第一步完成不了滚回,不执行接下的步骤。要么都不完成要么都完成,这是事务的特征。
语法很简单,示例代码如下:
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.Zhanghui15 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 begin22 --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 begin30 --update Jago.Zhanghui set Balance=Balance+200 where ID=1; 31 --raiserror('asdfsdf',16,-1)32 set @v = 1;33 end34 35 if(@v = 0)36 begin37 print @v38 commit tran t1;39 end40 else41 begin42 print @v43 rollback tran t1;44 end45 --commit transaction t146