SQL事务回滚和提交



我在一个事务中封装了以下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

所有上述统计数据都将回滚

最新更新