-1

変更または削除されたテーブル内の行のすべての元のデータをバックアップできるようにしたいと考えています。また、挿入されたすべての行を追跡したいと考えています。この理由は、私のアプリケーションにはデータベースへの変更を変更するユーザーがいて、すべての変更が正しいことをユーザーが確認するまで変更をコミットしたくないからです。

どうすればこれを行うことができますか?TransactionScope クラスと Transaction クラスを調べましたが、プログラムが 100 の異なるテーブルに対して 100 の更新を行う場合はどうなるでしょうか。私の理解が正しければ、ユーザーが変更が正しいことを確認するまで、100 の異なるスレッドが必要になりますか? トランザクションのコミットとロールバックについて検索しているときに、これに出会いました。

ヘルプ :(

4

3 に答える 3

0

変更されたすべての行を追跡したいので、問題はトランザクションに関するものではありません。トランザクションは、2 つのコマンド間でエラーが発生した場合にデータベースの整合性を維持するためのものです。元に戻す/やり直しの履歴モデルが必要だと思います。

追加のテーブルを使用して問題を解決できます。すべての変更を保持するための 1 つのテーブルと、変更の承認されたバージョンを指すための 1 つのテーブル。products テーブルの場合、次のようになります。

Products Table
RowId | ProductId | ProductName | Description | Price | ChangingTime

ApprovedProducts Table
ProductId | RowId

ユーザーが製品を更新するたびに、テーブルに新しい行を追加し、テーブルProductsで目的の行を指すことができます。RowIdApprovedProducts

于 2013-04-12T21:28:43.580 に答える
0

ユーザー入力を待っている場合は、トランザクションをずっと開いたままにしないでください。トランザクションは、データベース自体またはデータベース操作を管理する .NET コードからの低レベルのロールバックの処理に適しています。

ユーザー入力を待っている場合は、確認があるまで一時データを別のテーブルに保存してから、データを最終的な場所に移動します。

于 2013-04-12T20:53:03.853 に答える