[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 メーリングリストの案内