[pgsql-jp: 25142] Re: TRIGGER 作成でエラー

Takeshi Ken Yamada ken @ tydfam.jp
2002年 3月 7日 (木) 21:39:18 JST


 
tsukasa> 小泉です。
tsukasa> 
          :              :                 :
tsukasa> 結局、トリガー動作が「AFTER」でなければならないのでRULEはボツ。
tsukasa> PL/pgSQLで関数を書き直しました。(書き直すってほどじゃないですね)
tsukasa> これで問題なく動作しています。ありがとうございました。>ALL
tsukasa> 
tsukasa> ところで。PL/pgSQLについて、次のような記述があるのですが、ちょっと気
tsukasa> になっています。
tsukasa> 
tsukasa> 「PL/pgSQLはこのように実行プランを保存するので、直接 PL/pgSQL 関数内 
tsukasa> に現れる問い合わせはあらゆる実行において同じテーブルとフィールドを 
tsukasa> 参照するものでなければいけません。つまり、問い合わせ中でテーブルや 
tsukasa> フィールド名を引数として使用することはできません。」
tsukasa> 
tsukasa> これは、記述したSQL文に出てくるテーブル、カラムなどすべてを、OIDで参
tsukasa> 照しているから、関数内に名前が出てくるテーブルを作り直したりすると、
tsukasa> 関数〜トリガーも作り直さねばならない……ということでしょうか?
tsukasa> 

  私の知っている範囲ではYESです。
function で別の function を呼んでいたりすると、結構面倒です。(私は、
関係する function をまとめておいて、どれかを修正すると、全部消して、
再度入れ直すようにしています。前後にその為のスクリプトをコメントと
して入れたファイルを作り管理しています。)

  ま、トリガーが走って、エラー出てから入れ直すという安直な方法もあり
ますが、頻繁にトリガーがかかるシステムではまずいですね。(私のは月イチ
なので、ここら辺はどうでもいいのですが。dummy で update してトリガー
のチェックしてみたりしています。)







pgsql-jp メーリングリストの案内