削除フラグというのは、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文は少し書きかえるようだけど。


ペタしてね