码迷,mamicode.com
首页 > 数据库 > 详细

SqlCollections - 事务

时间:2014-10-23 14:02:07      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   sp   数据   div   on   

  1 --==============================事务===============================
  2 --简单的事务
  3 --Messages:1 2 4 6
  4 print 1
  5 --事务开始
  6 BEGIN TRAN
  7 
  8 --插入一条数据
  9 INSERT INTO 类别(类别名称)
 10 VALUES (bbb)
 11 IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)    --@@ERROR = 0代表正常,否则出错
 12 GOTO TranRollBack
 13 
 14 print 2
 15 
 16 --插入一条数据
 17 --已经有了aaa,会出错!
 18 INSERT INTO 类别(类别名称)
 19 VALUES (aaa)
 20 IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)    
 21 GOTO TranRollBack
 22 
 23 PRINT 3
 24 
 25 --插入一条数据
 26 INSERT INTO 类别(类别名称)
 27 VALUES (ccc)
 28 
 29 IF(@@ERROR > 0)
 30 BEGIN
 31     TranRollBack:
 32         PRINT 4
 33         --回滚事务
 34         ROLLBACK TRAN
 35 END
 36 ELSE
 37 BEGIN
 38     PRINT 5
 39     --提交事务
 40     COMMIT TRAN
 41 END
 42 
 43 print 6
 44 
 45 --嵌套事务
 46 --由于事务的原子性,事务内的所有语句要么全部执行,要么全部不执行,所以内层的COMMIT是没有意义的,仅仅是内层事务结束的标志
 47 --内层事务若触发ROLLBACK,会回滚到外层事务之前的状态,而不是内层事务开始时的状态!
 48 --82 rows
 49 SELECT COUNT(1) FROM 产品
 50 --开始事务
 51 BEGIN TRAN
 52 --插入一条数据
 53 INSERT INTO 产品(产品名称,类别ID) VALUES(西瓜汁,1)
 54 IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)
 55     GOTO TranRollback
 56 --83 rows
 57 SELECT COUNT(1) FROM 产品
 58 --嵌套事务
 59     BEGIN TRAN
 60     --插入一条数据,会出错!
 61     INSERT INTO 产品(产品ID) VALUES(1)
 62     IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)
 63     BEGIN
 64         ROLLBACK TRAN
 65     END
 66     ELSE
 67     BEGIN
 68         COMMIT TRAN
 69     END
 70 --82 rows
 71 SELECT COUNT(1) FROM 产品
 72 --再插入一条数据
 73 INSERT INTO 产品(产品名称,类别ID) VALUES(可乐,1)
 74 --83 rows
 75 SELECT COUNT(1) FROM 产品
 76 IF @@ERROR > 0
 77 BEGIN
 78     TranRollback:
 79         ROLLBACK TRAN
 80 END
 81 ELSE
 82 BEGIN
 83     COMMIT TRAN
 84 END
 85 --83 rows
 86 SELECT COUNT(1) FROM 产品
 87 
 88 --事务保存点
 89 --使用事务保存点,可以在内层事务回滚时只回滚到该内层事务的开始状态,从而可以实现有选择的回滚一部分
 90 --82 rows
 91 SELECT COUNT(1) FROM 产品
 92 --开始事务
 93 BEGIN TRAN
 94 --插入一条数据
 95 INSERT INTO 产品(产品名称,类别ID) VALUES(西瓜汁,1)
 96 IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)
 97     GOTO TranRollback
 98 --83 rows
 99 SELECT COUNT(1) FROM 产品
100 --嵌套事务
101     --保存事务位置
102     SAVE TRAN 嵌套事务
103     BEGIN TRAN
104     --插入一条数据,会出错!
105     INSERT INTO 产品(产品ID) VALUES(1)
106     IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)
107     BEGIN
108         ROLLBACK TRAN 嵌套事务    --此时要加上事务保存点的名称
109     END
110     ELSE
111     BEGIN
112         COMMIT TRAN 嵌套事务    --此时要加上事务保存点的名称
113     END
114 --83 rows
115 SELECT COUNT(1) FROM 产品
116 --再插入一条数据
117 INSERT INTO 产品(产品名称,类别ID) VALUES(可乐,1)
118 --84 rows
119 SELECT COUNT(1) FROM 产品
120 IF @@ERROR > 0
121 BEGIN
122     TranRollback:
123         ROLLBACK TRAN
124 END
125 ELSE
126 BEGIN
127     COMMIT TRAN
128 END
129 --84 rows
130 SELECT COUNT(1) FROM 产品

 

SqlCollections - 事务

标签:style   blog   color   io   使用   sp   数据   div   on   

原文地址:http://www.cnblogs.com/sky-sun/p/4045467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!