SQL--事物

1、什么是事物?

能够保证数据一致的代码控制,执行提交或者回滚到事物的初始状态。

2、事物的四大特性:acid 

原子性 事物不可拆分,执行或者回到原点,并没有中间状态;

一致性 数据前后都要一致

隔离性 事物在执行的过程中不允许外界干扰

持久性: 存在硬盘上 

3、事物的代码:

Begin transaction--设置事物开头

Rollback--回滚

Commit--确认操作

@@error--回传错误代码

Begin try end try

Begin catch end catch 这种写法只能用在2006/2008版本

经典案例:

插入数据,添加事物,不符合标准的话,全部不插入,符合标准全部插入。

购买水果

首先 判断水果库存以及购买者账户金额是否满足要求,把这部分判断语句添加到事物里面

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

 

posted on 2015-08-30 08:55  a-po  阅读(182)  评论(0编辑  收藏  举报