私が行っているファイルのインポートに関する情報が含まれているimports
テーブルを持っている:などidimport(SERIAL PRIMARY KEY
)、ファイル名、インポート日付、参照整合性:すべての子供ではなく、親を削除[PostgreSQLの]
いくつかのテーブルフィールドはidimport INTEGER REFERENCES imports(idimport) ON DELETE CASCADE
です。
ファイルを「インポート解除」するには、imports
テーブルの行を削除するだけです。
私が直面している問題は、ファイルをインポートしたが、インポートされたデータのトレースがないことをユーザーが教えてくれたということです。通常、ファイルをインポートしなかったので、ファイルを再インポートするのを忘れてしまいましたが、私はその証拠がありません。
私は削除されたインポートを追跡したいと思います。理想的には、PostgreSQLにすべての子行を削除し、親(imports
)の行を保持し、その行を削除したユーザー、削除したユーザー、削除が行われたとき(削除の理由など)をマークします。
imports
表中の「面白い」フィールドを覚えるでしょう
ON DELETE
トリガーを作成して削除操作を実行してみましょうと(
idimport
を含む)、興味深い分野とするもので
imports
行を再作成することです
私は追加したい。
しかし、 "Before"(暗記)と "After"(行の再作成)の両方のアクションが必要なので、2つのトリガーとなるので、どのようにしてコミュニケーションをとることができるか分かりません。もちろん
、私が監査を追加、削除された行で負担よりも、むしろテーブルを(DELETE FROM imports WHERE idimport=12
での作業)完全に統合されたソリューション
'old'レコード(何かを暗記する必要はありません)でも' after'トリガで削除された行全体にアクセスできます。 – pozs
削除された行をアーカイブするために別の新しいテーブルを使用しています。これは、単一の単純なトリガで実装することができます。 – klin
監査トリガーを探しています。 [ここ](https://eager.io/blog/audit-postgres/)または[ここ](https://www.garysieling.com/blog/auditing-data-changes-postgres)または[ここ]( https://wiki.postgresql.org/wiki/Audit_trigger_91plus)または[ここ](http://okbob.blogspot.de/2015/01/most-simply-implementation-of-history.html)または[ここ]( http://8kb.co.uk/blog/2015/01/19/copying-pavel-stehules-simple-history-table-with-the-jsonb-type/) –