2009-07-22 10 views
3

DELETEを除くすべてのステートメントで効果的なInformaticaを使用するMySQL-> Oracle ETLがあります。残念ながら、DELETEはレコードを削除し、InformaticaがOracleで削除/期限切れを再度確認することはありません。MySQL DELETEステートメントの記録

人々はどのようにしてMySQL DELETEの声明を記録しましたか?

テーブルはすべてのレコード(auto_increment)に一意の主キーを持つInnoDB(ACID準拠)です。私たちはWindows上でオープンソースのMySQLを使用しています。

性能上の理由から、一般的なクエリログを使用しないことをお勧めします。私たちはまた、ストックMySQLバイナリを保持し、私たちの特別なDELETEステートメントを再コンパイルしないことを好むでしょう。

答えて

2

解決策はデータベースから何も削除しないことです。情報が永遠に失われるため、データベースからの削除は避けてください。私は、テーブルに適切な列を追加することによって、情報を無効または古いものとしてマークすることを好む。

もう1つの同様の解決策は、削除するレコードを監査テーブルに挿入してから情報を削除することです(trigger)。 Informaticaのインサートを使用して、Oracle側で同じことを実行します。

+0

私は最初の段落に同意します。私たちはトリガーを実装することを本当に選択していますが、第2段落も実行可能なオプションとして同意すると思います。 – codemonkey

+0

はい、私はしばしば、 'DELETE'を表現する方法としてブール型' active'カラムに 'INSERT'を実装しました。あなたの 'SELECT'は、' 'DELETE'd ''データを除外するように調整する必要があります –

関連する問題