削除フラグというのは、DBでdelete処理されたレコードをきれいさっぱり消さずに、「消しました」というマークをつけておくときのそのマークのこと。
とはいっても、テーブルにboolean型の列を付け足して、デフォルトにfalse、delete処理されたものはtrueにupdateするようにします。消しません。
検索の際はwhere句でtrueの行は表示しないようにすれば、あたかも消えたように見える。
これって…消す(物理的削除)のではなく、シ カ ト(論理削除)か!!!
面倒に見えますが、間違って消したときにも復旧が楽(体感済)。
さて、その方法ですが…
PostgreSQLのcreate ruleコマンドを使用するんだとか。
create rule ルールの名前 as on delete to テーブル名
do instead
update テーブル名 set 削除フラグ列 = true where 列名 = old.列名;
これでOK。
このテーブルについてはdelete処理した時は削除フラグ列をupdate処理してくれよ~
というルールを作ってやっているようです。
ためしにdeleteを実行したら、行は消されず削除フラグ列の値がtrueになるだけ。
す、すげ~!
やっぱ復活させたいなら、update文でfalseにすればいいわけ。
もっとJavaのほうで面倒なコード書くのかとか考えてたのですが、psqlで以上の
処理を行えば終了。意外と簡単でよかった…
Javaのほうのselect文は少し書きかえるようだけど。
