0

すべて、いくつかのデータを含む DB があります。DB と通信する C++ アプリケーションもあります。

どのシナリオがより効率的ですか?

シナリオ 1:

  1. ユーザーは「データの編集」ボタンを押しました。
  2. プログラムは DB からデータを読み取り、編集用に提示します
  3. ユーザーはデータを編集し、「保存」ボタンを押します
  4. プログラムは、新しく保存されたデータで新しいオブジェクトを作成し、古いオブジェクトと比較します。
  5. プログラムはいくつかの UPDATE ステートメントを発行します。

シナリオ 2:

  1. 手順 1 ~ 3 は同じです。
  2. プログラムは、古いオブジェクト データを新しいデータで上書きします。
  3. プログラムは、1 つのトランザクションで DELETE/INSERT ステートメントを発行します。

私はシナリオ2と言う傾向があります。

4

1 に答える 1

1

どちらが効率的でトランザクション的に健全かという問題です。更新を実行するために既存のオブジェクトを削除することは、トランザクション的に健全ではありません。データベース内の既存のエンティティを更新するための更新が存在します。合成キーを使用している場合、このアプローチはまったく使用できません。

ほとんどのシステムでは、再フェッチ (少なくとも、コミットしようとしているオブジェクトが、データベースから要求してから変更されているかどうかを確認するため) が必須です。

ステップ 4 では、オブジェクトを読み取り、データベースから再フェッチして、変更されていないことを確認してから、更新またはロールバックをコミットする必要があります。

于 2012-10-28T05:55:37.130 に答える