• 締切済み

Select命令が来たらテーブルの全データを消去したい.

初めまして.よろしくお願いします. JDBCを使いJAVAプログラムからSelect命令が来たらテーブルの 全データをデリートするという動作をPL/pgSQL言語を使ってトリガ関数 として書きたいのですが、上手い書き方が見つかりません. Select命令をトリガとすると CREATE RULE name AS ON select TO tableName DO INSTEAD ~ となってしまい、DO以下にDelete文が書けないのです. JAVAのexecuteQuery関数を用いて連続してSelect文とDelete文を送る と、Select文とDelete文の実行される間にこのテーブルは随時新たなデータ が挿入される可能性があるので、なんとかトリガ関数で書きたいのです. 良い方法があればご教授のほうお願いします.

みんなの回答

回答No.1

マニュアルを読みましょう。 SELECTの背景では、SELECTしか動作させられません。 現在のところ、ON SELECTルールでは1つのアクションしか許されず、それはINSTEADである無条件のSELECTアクションでなければいけません。この制約は、一般のユーザが何をしても、ルールシステムが堅牢であるために必要であり、ON SELECTのルールはビュー同様の動作に限定されます。

参考URL:
http://www.postgresql.jp/document/pg821doc/html/rules-views.html

関連するQ&A