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
以上所有语句都会回滚
我有以下 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
以上所有语句都会回滚