• ベストアンサー

postgresql の rule とは

postgreSQL 7.2.1 を使用しています。 あるヒストリカルテーブルがUpdateされた際に 直近データのレコードだけをセレクトした テーブルを新規に作成したいと思っています。 この機能はpostgresql の ruleで実現可能でしょうか? (既存プログラムに手を入れたくないのです) rule機能がイマイチ理解出来ないので どなたかご助言ください。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

> どうやって使用したら良いのでしょうか? まず、そちらの環境はどうなっているのでしょう? 既存ソフトを触りたくないとありますが、そのソフトは何の言語でかかれ、どのような使い方でPostgreSQLにアクセスしているのでしょう? また、既存ソフトを触らずには無理のような気もしますが・・・

marohamaronanoja
質問者

お礼

ruleでは不可能な事が解りました。 意味不明な質問をしてしまいすみませんでした。 #元処理の値によってruleの発動を条件づけしたかったのですが、 #元処理がInsertの時はoldのテーブルが参照できず、 #元処理がUpdateの時は更新前のデータを参照してしまう事がわかりました。

marohamaronanoja
質問者

補足

亀レスですみません。 既存ソフトはJAVA1.3.1_04で書かれています。 AテーブルにインサートされたデータをruleでBテーブルにインサートし、 尚且つそのインサートデータがすでにBテーブルにあった場合は 同データをアップデートで処理したい。。。という用件です。 やはり難しいでしょうか?

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

ようは更新ログを取りたいと言うことですよね? create rule hoge update to table_name do  insert into new_table values(old.a,old.b,new.a,new.b,current_user,'now'); を試してください。

marohamaronanoja
質問者

補足

言葉が足りなくてすみません。 複数テーブルをUpdateする既存プログラムがあって、 それが稼動された時に動かしたいのです。 ヒストリカルテーブルが重いので 利用頻度が高い直近データだけの 軽いテーブルを作る事が目的です。 おおよその構文は調べて想像できたのですが どうやって使用したら良いのでしょうか? 「テーブルに貼り付けておけば・・」という アドバイスを戴いたのですが意味が解りません。 また、本来ruleで補える要件なのでしょうか?? よろしくお願いいたします。

関連するQ&A