事务回滚 SET XACT_ABORT ON

时间:2024-01-21 14:22:57
USE tempdb

IF OBJECT_ID ('dbo.test') IS NOT NULL
DROP TABLE dbo.test
GO
CREATE TABLE dbo.test
(
id INT NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
GO BEGIN TRANSACTION INSERT INTO dbo.test(id)VALUES (0 )
INSERT INTO dbo.test(id)VALUES (1 )
INSERT INTO dbo.test(id)VALUES (1 )
INSERT INTO dbo.test(id)VALUES (2 ) COMMIT TRANSACTION /*******结果********** (1 行受影响) (1 行受影响)
消息 2627,级别 14,状态 1,第 19 行
违反了 PRIMARY KEY 约束“pk_id”。不能在对象“dbo.test”中插入重复键。重复键值为 (1)。
语句已终止。 (1 行受影响)
*/ SELECT *FROM dbo.test /**********结果********* id
0
1
2
*/ TRUNCATE TABLE dbo.test SET XACT_ABORT ON BEGIN TRANSACTION INSERT INTO dbo.test(id)VALUES (0 )
INSERT INTO dbo.test(id)VALUES (1 )
INSERT INTO dbo.test(id)VALUES (1 )
INSERT INTO dbo.test(id)VALUES (2 ) COMMIT TRANSACTION /**********结果************
(1 行受影响) (1 行受影响)
消息 2627,级别 14,状态 1,第 61 行
违反了 PRIMARY KEY 约束“pk_id”。不能在对象“dbo.test”中插入重复键。重复键值为 (1)。
*/ SELECT *FROM dbo.test /******结果为空************/