1

レコードを作成するストアド プロシージャがあります。

SqlTransaction オブジェクトを使用して作成を複数回呼び出し、失敗した場合はすべての挿入をロールバックできますか?

4

2 に答える 2

2

ストアド プロシージャがそれ自体をコミットしない限り: はい、実行できます。

それが、そもそも取引を行う理由のようなものです。

于 2013-02-20T13:24:08.293 に答える
1

はい、トランザクションでコマンドを複数回実行しtry/catch、コミット/ロールバック用のブロックを追加するだけです:

transaction = connection.BeginTransaction("SampleTransaction");

try {
      // Execute Stored Procedure n times here.
      transaction.Commit();
} catch(SQLException e) {
     transaction.Rollback();
}

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx

.Rollbackベスト プラクティスとして、ロールバックが失敗した場合に備えて、try/catch でラップすることをお勧めします。

于 2013-02-20T13:24:13.147 に答える