PostgreSQL で Java/Spring/Hibernate を使用した新しいシステムを実装しています。このシステムは、テーブル内のレコードで変更/削除が行われるとすぐに、すべてのレコードのコピーを作成する必要があります。その後、監査テーブルはレポートによってクエリされ、ユーザーにデータが表示されます。
col1、col2 と呼ばれる約 20 列を持つ ENTITY_VERSIONS と呼ばれるテーブルに、変更された行 (削除された行) のコピーを作成するトリガーをテーブルに設定することにより、この監査/バージョン管理機能を実装することを計画していました。 、col3、col4 など、上記のテーブルの列を格納します。ただし、問題は、バージョン管理するテーブルが複数あり、すべてのテーブルのバージョンを格納する TARGET テーブル (ENTITY_VERSIONS) が 1 つしかない場合、TARGET テーブルをどのように設計すればよいかということです。
または、バージョン管理が必要なテーブルごとに VERSION テーブルの COPY がある方がよいでしょうか?
監査/バージョン管理を実装するための PostgreSQL トリガー (および関連するストアド プロシージャ) コードへのいくつかのポインターを共有できる場合は、ボーナスになります。
PS : SQL Server で監査テーブルを実装するための提案を見ましたか? OldValue と NewValue がどのタイプであるべきかわからないことを除いて、答えのようなものですか?
PPS : テーブルが HARD 削除の代わりに SOFT DELETE (ファントム削除) を使用している場合、アドバイスは変わりますか?