2016-04-29 161 views
-2

我在事務中包含下面的3個插入。如果任何插入由於任何原因失敗,我希望整個事務回滾。如果所有3個都成功,我希望它提交。SQL事務回滾並提交

BEGIN TRANSACTION 

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

COMMIT TRAN 
+0

又有什麼問題呢?你看到什麼錯誤? – AlBlue

回答

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

可以使用XACT_ABORT上做同樣的伎倆

set XACT_ABORT ON 

insert into test 
select 1 

insert into test 
select 1 

insert into test 
select 1/0 

上述所有的語句將被回滾

+0

我需要輸入其他內容嗎?像開始tranct? – Abbaskhan

+0

Xact _abort on會一直工作,只要所有人都在同一批次中,如果你在這些人之間加入,那麼這些工作,你可以添加try catch,不需要交易 – TheGameiswar