データに加えられた特定の変更を追跡する必要がある SQL Server 2008 R2 データベースがあります。これまでのすべての調査により、行われたすべての変更を非常に複雑に追跡する方法が明らかになりましたが、私の場合はもう少し具体的で、(管理者によって) 承認されるまで変更を追跡するだけでよいため、より単純だと思います。 .
これを行うために私が考えることができる唯一の方法は、影響を受けるテーブルごとに、変更のタイプ (つまり、または)、主キー、列名、および該当する場合は値pending_changes
を追跡するテーブルを作成することです。または変更する値。 INSERT
UPDATE
DELETE
次に、変更が承認されると、これから SQL ステートメントを生成して、変更をメイン テーブルに書き込むことができます。ただし、これは非常に不器用な方法のように感じられます。これを照会するのは困難です (たとえば、古い値と新しい値のリストを作成するなど)。
これは非常に小さなデータベース (< 1000000 行) で、ユーザーは 5 人ほどしかいないため、パフォーマンスは問題になりません。
編集:
変更を追跡する目的は、変更をデータベースに書き込む前に承認する必要があることです。データは主に法的な意味を持つ科学的なものであるため、ユーザー (この場合はクライアント) によって提案された変更は、承認される前に専門家によってチェックされる必要があります。それらが承認されると、古い値を知る必要がなくなります。DELETE
ステートメント を含むすべての変更には、この承認が必要です。INSERT
変更されたデータを保持する同様のテーブルを作成することでUPDATE
処理できますが、削除を処理する方法がわかりません。また、追跡する必要のあるベース テーブルがいくつかあるため、余分なテーブルが多くなりすぎないようにしたいと考えています。また、複雑さが増すことも心配しています。