2017-06-02 9 views
0

私が行っているファイルのインポートに関する情報が含まれている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での作業)完全に統合されたソリューション

+1

'old'レコード(何かを暗記する必要はありません)でも' after'トリガで削除された行全体にアクセスできます。 – pozs

+0

削除された行をアーカイブするために別の新しいテーブルを使用しています。これは、単一の単純なトリガで実装することができます。 – klin

+1

監査トリガーを探しています。 [ここ](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/) –

答えて

0

をこのクライアント側の操作を行いまたはストアドプロシージャを作成しますが、私は好む可能性のいずれかトリガーでインポートが削除されるたびに記録するテーブル。この表は、必要に応じて簡単にパージして切り捨てることができ、アプリケーションに負担をかけません。

関連する問題