SQL--事物
1、什么是事物?
能够保证数据一致的代码控制,执行提交或者回滚到事物的初始状态。
2、事物的四大特性:acid
A 原子性 事物不可拆分,执行或者回到原点,并没有中间状态;
C 一致性 数据前后都要一致
I 隔离性 事物在执行的过程中不允许外界干扰
D 持久性: 存在硬盘上
3、事物的代码:
Begin transaction--设置事物开头
Rollback--回滚
Commit--确认操作
@@error--回传错误代码
Begin try end try
Begin catch end catch 这种写法只能用在2006/2008版本
经典案例:
1 插入数据,添加事物,不符合标准的话,全部不插入,符合标准全部插入。
2 购买水果
首先 判断水果库存以及购买者账户金额是否满足要求,把这部分判断语句添加到事物里面
Bengin tran
判断水果库存
判断buyer 账户余额
可以正常购买 commit
否则 rollback
例子:
三、事务的代码:
定义事务的开始:begin transaction
事务回滚:rollback
事务提交:commit
@@ERROR 最近一条语句是否执行成功。成功返回0,否则返回错误代号。
例如:
法一:使用@@ERROR和if判断来使用事务
1 declare @t int --记录累计的错误信息 2 3 set @t = 0 4 5 begin tran --启动事务 6 7 insert into Info values('p003','吴倩','0','n004','1990-8-12') 8 9 set @t = @t +@@ERROR --累计错误信息 10 11 insert into Info values('p006','张三','1','n004','1992-3-19') 12 13 set @t = @t +@@ERROR --累计错误信息 14 15 insert into Info values('p005','李四','0','n001','1991-12-24') 16 17 set @t = @t +@@ERROR --累计错误信息 18 19 20 21 if @t<> 0 --如果累计发现有错误 ,就回滚 22 23 begin 24 25 rollback 26 27 end 28 29 else --如果累计中没有发现错误,就提交 30 31 begin 32 33 commit 34 35 end 36 37
法二:
1 使用try...catch....来使用事务 2 3 begin tran 4 5 begin try 6 7 insert into Info values('p007','王五','0','n002','1991-4-1') 8 9 insert into Info values('p009','张四','1','n004','1992-3-19') 10 11 insert into Info values('p008','李九','0','n001','1991-12-24') 12 13 commit 14 15 end try 16 17 begin catch 18 19 rollback 20 21 end catch