--创建测试表
use MyDB
CREATE TABLE mtest
(
tt tinyint
)
GO
--插入测试数据
---------------测试事务提交------------------
---有TRAN的情况
use MyDB
--错误行回滚,错误行前的不回滚,在错误行不终止,错误行之后的执行
SET XACT_ABORT OFF
BEGIN TRAN
INSERT INTO mtest VALUES (1)
INSERT INTO mtest VALUES (2)
INSERT INTO mtest VALUES (-1) /* tinyint 的算术溢出错误 */
INSERT INTO mtest VALUES (3)
INSERT INTO mtest VALUES (4)
COMMIT TRAN
GO
use MyDB
--事务终止并全部回滚,在错误行终止,错误行之后的不执行
SET XACT_ABORT ON
BEGIN TRAN
INSERT INTO mtest VALUES (4)
INSERT INTO mtest VALUES (5)
INSERT INTO mtest VALUES (-2) /* tinyint 的算术溢出错误 */
INSERT INTO mtest VALUES (6)
INSERT INTO mtest VALUES (7)
COMMIT TRAN
GO
---无TRAN的情况
use MyDB
--错误行回滚,错误行前的不回滚,在错误行不终止,错误行之后的执行
SET XACT_ABORT OFF
BEGIN
INSERT INTO mtest VALUES (8)
INSERT INTO mtest VALUES (9)
INSERT INTO mtest VALUES (-3) /* tinyint 的算术溢出错误 */
INSERT INTO mtest VALUES (10)
INSERT INTO mtest VALUES (11)
END
GO
use MyDB
--错误行回滚,错误行前的不回滚,在错误行终止,错误行之后的不执行
SET XACT_ABORT ON
BEGIN
INSERT INTO mtest VALUES (12)
INSERT INTO mtest VALUES (13)
INSERT INTO mtest VALUES (-4) /* tinyint 的算术溢出错误 */
INSERT INTO mtest VALUES (14)
INSERT INTO mtest VALUES (15)
END
GO