1. ホーム
  2. sql

[解決済み】SQL Server - トランザクションは、エラー時にロールバックしますか?

2022-04-22 16:55:42

質問

SQL Server 2005上で次のようなSQLを実行するクライアントアプリがあります。

BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;

1つの長い文字列のコマンドで送信されます。

挿入に失敗した場合、またはコマンドの一部が失敗した場合、SQL Server はトランザクションをロールバックしますか? ロールバックしない場合、ロールバックするために2つ目のコマンドを送信しなければならないのでしょうか?

使っているapiと言語について具体的に説明できますが、SQL Serverはどの言語でも同じように反応するはずだと思います。

どのように解決するのですか?

を配置することができます。 set xact_abort on エラー時に自動的にロールバックするように、トランザクションの前に記述してください。