首页 > 代码库 > SqlCollections - 事务
SqlCollections - 事务
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 TRAN104 --插入一条数据,会出错!105 INSERT INTO 产品(产品ID) VALUES(1)106 IF(@@ERROR > 0 OR @@ROWCOUNT <> 1)107 BEGIN108 ROLLBACK TRAN 嵌套事务 --此时要加上事务保存点的名称109 END110 ELSE111 BEGIN112 COMMIT TRAN 嵌套事务 --此时要加上事务保存点的名称113 END114 --83 rows115 SELECT COUNT(1) FROM 产品116 --再插入一条数据117 INSERT INTO 产品(产品名称,类别ID) VALUES(‘可乐‘,1)118 --84 rows119 SELECT COUNT(1) FROM 产品120 IF @@ERROR > 0121 BEGIN122 TranRollback:123 ROLLBACK TRAN124 END125 ELSE126 BEGIN127 COMMIT TRAN128 END129 --84 rows130 SELECT COUNT(1) FROM 产品
SqlCollections - 事务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。