SQL事务回滚和提交

SQL transaction rollback and commit

我有以下 3 个插入交易。如果任何插入由于任何原因失败,我希望整个事务回滚。如果所有 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 on 来做同样的事情

set XACT_ABORT ON

insert into test
select 1

insert into test
select 1

insert into test
select 1/0

以上所有语句都会回滚