首页 > 代码库 > SQL SET XACT_ABORT各种用法及显示结果
SQL SET XACT_ABORT各种用法及显示结果
/* SET XACT_ABORT各种用法及显示结果 默认为SET XACT_ABORT OFF,没有事务行为。 SET XACT_ABORT ON分为两种: 1、总体作为一个事务,整体提交或整体回滚,格式为: SET XACT_ABORT ON BEGIN TRAN --要执行的语句 COMMIT TRAN GO 2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为: SET XACT_ABORT ON BEGIN --要执行的语句 END GO */ CREATE TABLE student ( stuid int NOT NULL PRIMARY KEY, stuname varchar(50) ) CREATE TABLE score ( stuid int NOT NULL REFERENCES student(stuid), score int ) GO --插入测试数据 INSERT INTO student VALUES (101,‘zhangsan‘) INSERT INTO student VALUES (102,‘wangwu‘) INSERT INTO student VALUES (103,‘lishi‘) INSERT INTO student VALUES (104,‘maliu‘) GO ---------------测试事务提交------------------ --只回滚错误行,错误行之后的语句还继续执行 SET XACT_ABORT OFF BEGIN TRAN INSERT INTO score VALUES (101,90) INSERT INTO score VALUES (102,78) INSERT INTO score VALUES (107,76) /* Foreign Key Error */ INSERT INTO score VALUES (103,81) INSERT INTO score VALUES (104,65) COMMIT TRAN GO /* stuid score ----------- ----------- 101 90 102 78 103 81 104 65 (4 row(s) affected) */ --DELETE FROM dbo.score --总体做为一个事务,事务终止并全部回滚 SET XACT_ABORT ON BEGIN TRAN INSERT INTO score VALUES (101,90) INSERT INTO score VALUES (102,78) INSERT INTO score VALUES (107,76) /* Foreign Key Error */ INSERT INTO score VALUES (103,81) INSERT INTO score VALUES (104,65) COMMIT TRAN GO /* stuid score ----------- ----------- (0 row(s) affected) */ /* 每个语句作为一个事务,事务在错误行终止, 错误行回滚,错误行之前的不回滚, 错误行之后的不执行 */ SET XACT_ABORT ON BEGIN INSERT INTO score VALUES (101,90) INSERT INTO score VALUES (102,78) INSERT INTO score VALUES (107,76) /* Foreign Key Error */ INSERT INTO score VALUES (103,81) INSERT INTO score VALUES (104,65) END GO /* stuid score ----------- ----------- 101 90 102 78 (2 row(s) affected) */ --DROP TABLE score,student GO
SQL SET XACT_ABORT各种用法及显示结果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。