SQL事务回滚和提交

时间:2016-04-29 10:24:02

标签: sql-server transactions rollback

我在事务中包含了以下3个插入。如果任何插入因任何原因失败,我希望整个事务回滚。如果所有3个都成功了,我希望它能够提交。

BEGIN TRANSACTION

    INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
    INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
    INSERT INTO myTable (myColumns ...) VALUES (myValues ...);

COMMIT TRAN 

2 个答案:

答案 0 :(得分:3)

用户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

答案 1 :(得分:1)

你可以使用XACT_ABORT来做同样的技巧

set XACT_ABORT ON

insert into test
select 1

insert into test
select 1

insert into test
select 1/0

所有上述声明都将回滚