2

削除時にカスケードする MySQL テーブルに外部キー制約を設定しています。ユーザーを削除するときに影響を受ける他のすべてのテーブルと行を追跡する必要があります。これは、関連する物理ファイルも削除する必要があるためです。これをログに記録する方法はありますか?

4

2 に答える 2

2

追跡したい各テーブルにトリガーを追加することで、次のように簡単に実行できます。

  • 監査テーブルにフィードする
  • バックグラウンド ジョブを実行して、対応するファイルを削除します

ミッチが言ったように、正確に何をしたいのかはあなた次第です。

たとえば、履歴の目的で行を保持することもできます。この場合、テーブルで「deleted」フラグを使用して独自の行「抑制」を実装できるため、行を削除するときはいつでもフラグを 1 に設定できます。[...]

于 2012-06-02T01:01:06.600 に答える
1

違うと思う。しかし、ちょっとしたトリックを行うことができます。たとえば、テーブル A のレコードを削除する前に、削除されたレコードに関連する他のテーブルのすべてのレコードを選択します。

   $sql = "SELECT Id FROM b WHERE b.a_id ='$deleted_A_Id'";
   //delete physical file and any other things
   $sql = "DELETE FROM A where A.id = '$deleted_A_Id'";
   //just exec sql the normal way 
于 2012-06-02T00:55:00.243 に答える