[pgsql-jp: 40820] Re: スキーマ間のトリガー
Tsunezumi
tsunezumi @ efficlabo.com
2011年 6月 27日 (月) 10:10:22 JST
ご返信有難うございます。
> > これはトリガーEがS1にあるため、S2のストアドCがS1のテーブルを見にいってしまっているようでした。
この場合は、なんとなく理解できるのですが、
トリガーをS2に作成した場合でも、S1のテーブルを見ているので、
やはり、「最初のテーブルやスキーマを選択したことになります。」ということですか。
S2のテーブルを更新するときはS2にある既存のストアドで対応したかったのですが、
スキーマを設定する必要があるということですね。
CREATE FUNCTION 時に SET search_pathを設定する方法があるということで、
手間は省けそうです。
有難うございます。
Itagaki Takahiro <itagaki.takahiro @ gmail.com> wrote:
> 2011/6/24 Tsunezumi <tsunezumi @ efficlabo.com>:
> > これはトリガーEがS1にあるため、S2のストアドCがS1のテーブルを見にいってしまっているようでした。
>
> スキーマ指定をしない場合、デフォルトのスキーマ検索パスで見つかった
> 最初のテーブルやスキーマを選択したことになります。
> 異なるスキーマに同じ名前のオブジェクトがある場合、
> 「スキーマ.名前」の形式でアクセスする必要があるのではないでしょうか?
> (S1.テーブルA, S2.ストアドC() など)
>
> 動作としては同じですが、CREATE FUNCTION 時に SET search_path で
> 検索するスキーマを設定する方法もあります。
> http://www.postgresql.jp/document/current/html/sql-createfunction.html
> の SET オプション
>
> --
> Itagaki Takahiro
pgsql-jp メーリングリストの案内