まず、私はこのような何かからあなたのテーブル構造を変更することをお勧めします:
id field1 field2 field3 field4 timestamp
このようなものに:
Table 1
-------
id fieldKey value timestamp
1 1 42 12:03am
2 3 'Cow' 1:45am
3 2 'Moo' 2:33am
4 4 99 3:59am
Table 2
-------
fieldKey fieldLabel
1 Field One
2 Field Two
3 Event One
4 Event Two
セカンド、あなたはコピーであなたが望むものを達成することができます古い値を入力するか、フィールド値のハッシュを計算し(長いフィールド用)、別のフィールド(oldField1、oldField2など)にタイムスタンプとともに格納してから、テーブルをポーリングします。私はすべてのデータベースがSHA1( 'xyz')やMD5( 'abc')のようなハッシュ関数を持っていると信じています。
変更のためにテーブルをポーリングすると、変更された行が表示され、フィールド比較によってフィールドが変更されたことを確認できます。したがって、field1をoldField1、field2をoldField2、field3をoldField3などと比較します。ブロブの場合、SHA1(field4)とoldField4を比較できます。
タイムスタンプを更新するときにフィールドをコピーするストアドプロシージャトリガを作成します。
もう1つの解決策は、変更を保存するだけのデータ変更ログテーブルを作成することです。これはトリガストアドプロシージャを介して挿入され、それはこのようになります
id tableName rowKey fieldName oldValue newValue timestamp
1 WINDOWS_EVENTS 42 event1 stable crash 4:44am
Ionnoしかし、データベースに依存しないようにするには、ORMが必要なようです。 – mpen
@マーク、nHibernateで可能なものが必要でしょうか?また、私はORMがいつでも約100,000レコードのテーブルに適しているかどうかはわかりません(100,000を超えないでしょう)。 – Liao