- - PR -
ADO.NETのトランザクションについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-18 12:31
VB.NETとADO.NETを用いて業務アプリを開発しています
DBの更新処理で @テーブルAに1レコード追加 AテーブルBに1レコード追加 B主キーをもとにテーブルAを1レコード削除 C主キーをもとにテーブルBを1レコード削除 を処理をしたいのですが、@、A、B、Cの処理は、 別々のメソッドで処理されていて、 @、A、B、Cのどれか失敗した場合は、 ロールバックしたいのですが、 @、A,B、Cの間で結構やる処理が多いのです COM+は使用していません。 こういう場合は、どのようにトランザクションを 実装したら、DBの一貫性が保たれるか、 アドバイスして頂けないでしょうか? よろしくお願いします | ||||
|
投稿日時: 2006-06-18 12:54
これは
どのぐらいの頻度で、どんなタイミングで動いて、 どのぐらい時間のかかる処理なんでしょうか? 結構やる処理が多いということですが 実際にどのぐらい処理時間を見込んでいますか? DBを開く前にできることはすべてやっておいて 1の直前で開いて4の直後に閉じるのが 一番楽で確実だとは思いますが、用件によると思います。 | ||||
|
投稿日時: 2006-06-18 13:05
そうですね。
僕も、あまり関係のない処理を長々とやっている際にバグでも含めて、失敗したのにコミットしちゃうことの方が怖いです。 なので、更新は1メソッドに固めて見渡せる程度のコード量にした上で、1の「直前」で開始して、4の直後にコミットです。 | ||||
|
投稿日時: 2006-06-18 13:32
問い:DBの一貫性が保つ手順を示せ。 答え:トランザクションを開始し、追加・削除処理し、トランザクションをコミットする。 ではダメなのでしょうか? メソッドが4つあることを気にされているのでしょうか? メソッドが4つあっても共通のコネクションを使う限りトランザクションは一貫します。 それとも処理が多いことを気にされているのでしょうか? トランザクションは一貫性と処理が多さはとくに関連はないと思います。速度などのパフォーマンスの問題は別途あるかもしれませんが。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2006-06-18 15:47
連続するデータベースアクセス処理の記述方法 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-06-18 19:41
こぶたです
みなさん、アドバイスありがとうございます。 がんばってやってみます。 |
1