[pgsql-jp: 40050] Re: EXECUTE USINGについて

ISHIDA Akio iakio @ mono-space.net
2009年 11月 4日 (水) 20:36:23 JST


こんにちは。石田です。

2009年11月4日20:20 Yusuke Yamasaki <tm9233yy @ gmail.com>:
> 山崎(ゆ)です。
>
>> 石田さん
> 返信ありがとうございます。
>
>>    EXECUTE 'CREATE TABLE ' ||part|| ' (LIKE ' ||parent
>>    || ' INCLUDING INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, '
>>    || 'CHECK ($1 <= $2 AND $2 < $3)'
>>    || ') INHERITS (' ||parent|| ')'
>>    USING t_beg, t_cur, t_end;
>
> 結果は同じようなエラーになりました。
>
> ERROR:  there is no parameter $1
> CONTEXT:  SQL statement "CREATE TABLE events_0911 (LIKE events
> INCLUDING INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, CHECK ($1
> <= $2 AND $2 < $3)) INHERITS (events)"
> PL/pgSQL function "event_insert_trigger" line 17 at EXECUTE statement
>

ああ、どうやらパラメータはtextでないとダメなようです。
>>    USING t_beg, t_cur, t_end;
を
>>    USING t_beg::text, t_cur::text, t_end::text;
としてみてはどうでしょう。


> ちなみに最初に書いた(1)のコードは間違っていました。あれだとCHECK条件は常に真でした。
>
> (1)の訂正
>
>     EXECUTE 'CREATE TABLE ' ||part|| ' (LIKE ' ||parent|| ' INCLUDING
> INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, '
>     || 'CHECK (' ||quote_literal(t_beg)|| ' <= created_at AND
> created_at < ' ||quote_literal(t_end)|| ')'
>     || ') INHERITS (' ||parent|| ')';
>
> CHECK制約は以下のように定義されました。
> 11月のレコードがevents_0911テーブルに振り分けられます。
>
> "events_0911_created_at_check" CHECK ('2009-11-01 00:00:00'::timestamp
> without time zone <= created_at AND created_at < '2009-12-01
> 00:00:00'::timestamp without time zone)
>
>
> (2) もこれに合わせると、以下のようになります。
>
> (2)の訂正
>
>     EXECUTE 'CREATE TABLE ' ||part|| ' (LIKE ' ||parent
>     || ' INCLUDING INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, '
>     || 'CHECK ($1 <= created_at AND created_at < $2)'
>     || ') INHERITS (' ||parent|| ')'
>     USING t_beg, t_end;
>
>
> いずれにしてもこれはエラーになりました。
>
> ERROR:  there is no parameter $1
> CONTEXT:  SQL statement "CREATE TABLE events_0911 (LIKE events
> INCLUDING INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, CHECK ($1
> <= created_at AND created_at < $2)) INHERITS (events)"
>
> --
> Yusuke Yamasaki <tm9233yy @ gmail.com>
>
>



-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



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