我在一个事务中封装了以下3个插入。如果任何插入由于任何原因失败,我希望整个事务回滚。如果这三个都成功了,我希望它被承诺。
BEGIN TRANSACTION
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN
用户TRY...CATCH
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO myTable (myColumns ...) VALUES (myValues ...)
INSERT INTO myTable (myColumns ...) VALUES (myValues ...)
INSERT INTO myTable (myColumns ...) VALUES (myValues ...)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END
您可以在上使用XACT_ABORT来执行相同的技巧
set XACT_ABORT ON
insert into test
select 1
insert into test
select 1
insert into test
select 1/0
所有上述统计数据都将回滚