DBの削除フラグって何故未だに一部で人気があるのだろうか・・・。一度たりとも有効だなと感じた事がないですね。
データを復元する可能性があるならば、バックアップテーブルにインサートしてから削除すればいいです。他によく聞くのは削除は遅いという点。だから夜間バッチでインデックス外して削除するという話。これはわかるけど・・・
でも、削除フラグを採用する事により、インサートが大変になるんですよね。論理削除された同じキーのデータが存在するかを確認してから、あればアップデートで復活、なければインサートってことをやらなければならない。
select * from Hoge where deleteFlag = 1 for update;でレコードが返ってこればアップデート、レコードが返ってこなければインサートってことになりますね。削除フラグ1つで全く無駄になるわけです。削除が遅いからといって削除フラグを用意しても、結局インサートで無駄な処理を行う必要が出てくるわけです。
削除、検索、更新は必ず削除フラグを見なければいけませんし、一体どこにメリットがあるのでしょうね。