レコードを作成するストアド プロシージャがあります。
SqlTransaction オブジェクトを使用して作成を複数回呼び出し、失敗した場合はすべての挿入をロールバックできますか?
レコードを作成するストアド プロシージャがあります。
SqlTransaction オブジェクトを使用して作成を複数回呼び出し、失敗した場合はすべての挿入をロールバックできますか?
ストアド プロシージャがそれ自体をコミットしない限り: はい、実行できます。
それが、そもそも取引を行う理由のようなものです。
はい、トランザクションでコマンドを複数回実行し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 でラップすることをお勧めします。