[pgsql-jp: 32564] Re: 外部キーについて

馬場 泰明 ( 川上) kawakami @ mxe.nes.nec.co.jp
2004年 3月 24日 (水) 22:47:08 JST


to:平塚様

お世話になります。馬場です。

>今回の仕様が、親テーブルのUNIQUE制約としてMENU_ID、TITLE_ID、CHARA_DATAを
>1つとして考えております。

了解です。ちょうど同じことを考えておりました。

>よって各々にUNIQUE制約を持たせることが今回の仕様上できません。
>PRIMARY(MENU_ID、TITLE_ID、CHARA_DATA)または
>UNIQUE INDEX(MENU_ID、TITLE_ID、CHARA_DATA)で宣言した場合は、
>子から外部キーをつけることが出来ないということでしょうか。

create table 自体は、できるようです。
以下ご参考までに。
# ごめんなさい、実際データを入れて試したりはしてません。。。

[親表]
create table test_ms(
 menu_id smallint not null,
 title_id smallint not null,
 chara_data char(10) not null,
 refix_date date not null,
 constraint ms_fk primary key (menu_id,title_id,chara_data));

# primary key をつける場合、not null が必須のようです。

[子表]
create table test_sl(
 menu_id smallint not null,
 title_id smallint not null,
 chara_data char(10) not null,
 refix_date date not null,
 constraint sl_fk FOREIGN KEY(menu_id,title_id,chara_data)
 REFERENCES test_ms (menu_id,title_id,chara_data));

>無知の上、いろいろとご質問をさせていただきすみません。

とんでもありません!
平塚様のおかげで、PostgreSQL では primary key をつける際、
not null制約が必須であることがわかりました。ありがとうございます。

以上ご参考になれば幸いです。

/ばばやすあき

2004/03/24 22:25:22 +0900に"Kazuhiro Hiratsuka" <hira @ js-bros.co.jp>さんに頂いた
「[pgsql-jp: 32563] Re: 外部キーについて」への返事です。
>お世話になっております、平塚です。
>
>馬場様、試してみましたところ上手く出来ましたが、
>今回の仕様が、親テーブルのUNIQUE制約としてMENU_ID、TITLE_ID、CHARA_DATAを
>1つとして考えております。
>よって各々にUNIQUE制約を持たせることが今回の仕様上できません。
>PRIMARY(MENU_ID、TITLE_ID、CHARA_DATA)または
>UNIQUE INDEX(MENU_ID、TITLE_ID、CHARA_DATA)で宣言した場合は、
>子から外部キーをつけることが出来ないということでしょうか。
>
>無知の上、いろいろとご質問をさせていただきすみません。
>



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