ユーザーが Confluence wiki でスペースを取り消し不能に削除できないようにしようとしています。私が最初に考えたのは、spaces
テーブルの名前を に変更しallspaces
、新しい列を追加し、古いテーブルの代わりにdeleted
ビューを作成することでした。spaces
ビューは、削除されていないスペースのみを返します。ビューで INSERT、UPDATE、および DELETE を許可する 3 つのルールを作成しましたspaces
。DELETE ルールはdeleted
フィールドを変更するだけでビューから削除しますが、すべてのデータはデータベースに残ります。
問題は、PostgreSQL からspaces
戻ったときの DELETE ステートメントです。DELETE 0
これにより、Hibernate が反転して例外が投げられ、Confluence が爆発します。
INSTEAD ルールで削除された行ではなく、変更された行を PostgreSQL に返すようにする方法はありますか。