2011-07-12 23 views
4

一部の表の時間中にデータの変更を追跡する必要があります。この課題を達成するためのアドバイスが必要です。私たちの心には2つの通りがあります。 1)userid、日付変更、テーブル名、フィールド名、フィールドタイプ、フィールド値のレコードを持つテーブルを作成します。このようにして、トリガーで追跡します。データ履歴のトラッキングのベストプラクティス

2)Statusという履歴を追跡するために必要なすべてのテーブルに状態フィールドを追加します。このフィールドには、次の値があります。I = inserted - D = deleted - M =相対日付で修正。このようにして、最新の有効な行と以前のすべてのデータ変更を常に知ることができます 3)あなたの心に あなたはどう思いますか?

答えて

3

私はこれを、別々の "履歴"スキーマとトリガを使用してPostgreSQLで複数回実行しました。

"history"スキーマのテーブルは、実際のテーブルと同じですが、history_id PKとイベントタイムスタンプが追加されています。 「履歴」スキーマの表には制約がありません。また、削除を追跡する必要がある場合は、アクションのフィールドを作成する必要があります。 PostgreSQLの

あなたは簡単に、このようなCREATEステートメントを使用してこのような表を作成することができます。

この後
CREATE TABLE history.tbl AS 
    (history_id BIGSERIAL PRIMARY KEY, 
    event_time TIMESTAMP DEFAULT NOW(), 
    action CHAR(1), 
    LIKE public.tpl); 

あなたは、挿入時に履歴テーブルに挿入、更新、削除させていただきますトリガーを作成する必要があります。

関連する問題