2016-04-29 16 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

ユーザーは、あなたが同じトリックに

set XACT_ABORT ON 

insert into test 
select 1 

insert into test 
select 1 

insert into test 
select 1/0 

すべて上記たstatmentsを行うためにXACT_ABORTを使用することができます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

バック

+0

他に何か入力する必要がありますか?始まりのような始まりなの? – Abbaskhan

+0

Xact _abort onは、すべて同じバッチになっている限り動作します。それらの間に追加した場合、それらの作業は、追加できます。 – TheGameiswar

関連する問題