4

一部のテーブルで、データの変更を追跡する必要があります。このタスクを達成する方法についていくつかのアドバイスが必要です。私たちの心には2つの通りがあります。1)次のレコードを使用してテーブルを作成します:ユーザーID、日付変更、テーブル名、フィールド名、フィールドタイプ、フィールド値。このように、トリガーで追跡します。

2)ステータスと呼ばれる履歴を追跡するために必要なすべてのテーブルに状態フィールドを追加します。このフィールドの値は次のとおりです。I=挿入-D=削除-M=相対的な日付と変更で変更。このようにして、常に最新の有効な行と以前のすべてのデータ変更を知ることができます3)それはあなたの心の中にありますあなたは何を提案しますか?

4

1 に答える 1

3

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

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

CREATEpostgreSQLでは、次のステートメントを使用してこのようなテーブルを簡単に作成できます。

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

この後、挿入、更新、削除時に履歴テーブルに挿入するトリガーを作成する必要があります。

于 2011-07-12T10:34:36.640 に答える