[pgsql-jp: 32561] Re: 外部キーについて
馬場 泰明 ( 川上)
kawakami @ mxe.nes.nec.co.jp
2004年 3月 24日 (水) 21:46:42 JST
to:平塚様
馬場と申します。お世話になります。
エラーの内容ですが、外部キーが参照しに行く列は一意である必要があります
っという意味だと思います。
# まだ PostgreSQL になれていないのですが、少なくとも Oracle の場合、
# REFERENCES で指定する列は、主キーもしくは一意キーである必要があります。
WHATS_NEW_CHARA 表に、以下の制約を追加したところ、WHATS_NEW 表の作成が
うまくいきました。
sampledb=# alter table WHATS_NEW_CHARA add unique (MENU_ID);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "whats_new_chara_menu_id_key" for table "whats_new_chara"
ALTER TABLE
sampledb=# alter table WHATS_NEW_CHARA add unique (TITLE_ID);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "whats_new_chara_title_id_key" for table "whats_new_chara"
ALTER TABLE
sampledb=# alter table WHATS_NEW_CHARA add unique (CHARA_DATA);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "whats_new_chara_chara_data_key" for table "whats_new_chara
"
以上ご参考になれば幸いです。
/ばば やすあき
2004/03/24 21:34:22 +0900に"Kazuhiro Hiratsuka" <hira @ js-bros.co.jp>さんに頂いた
「[pgsql-jp: 32558] 外部キーについて」への返事です。
>はじめまして平塚と申します。
>すみません。先程のメールにエラーの内容をつけていませんでした。
>
>現在、Linux環境でpostgreSQL7.4.1を使用しています。
>親と子のテーブル2つを参照制約付きで作成しようとしているのですが、
>親のテーブルは正常に作成できたのですが、子の作成でエラーが発生して原因が掴め
>ません。
>テーブル構成は、
>【親】
>CREATE TABLE WHATS_NEW_CHARA (
> MENU_ID SMALLINT NOT NULL, -- メニューID
> TITLE_ID SMALLINT NOT NULL, -- タイトルID
> CHARA_DATA CHAR (32) NOT NULL, -- キャラデータ名
> REFIX_DATE DATE NOT NULL -- 更新日
>);
>CREATE UNIQUE INDEX I_WHATS_NEW_CHARA1 on WHATS_NEW_CHARA
> ( MENU_ID, TITLE_ID, CHARA_DATA );
>
>【子】
>CREATE TABLE WHATS_NEW (
> UP_DATE DATE NOT NULL, -- 日付
> MENU_ID SMALLINT NOT NULL, -- メニューID
> TITLE_ID SMALLINT NOT NULL, -- タイトルID
> CHARA_DATA CHAR(32) NOT NULL, -- キャラデータ名
> REFIX_DATE DATE NOT NULL, -- 更新日
> FOREIGN KEY(MENU_ID) REFERENCES WHATS_NEW_CHARA(MENU_ID),
> FOREIGN KEY(TITLE_ID) REFERENCES WHATS_NEW_CHARA(TITLE_ID),
> FOREIGN KEY(CHARA_DATA) REFERENCES WHATS_NEW_CHARA(CHARA_DATA)
>);
>
>CREATE UNIQUE INDEX I_WHATS_NEW1 on WHATS_NEW
> ( REFIX_DATE );
>です。
>
>エラーの内容は、
>psql:WhatsNew.sh:12: ERROR: there is no unique constraint matching given
>keys for referenced table "whats_new_chara"
>です。
>
>どなたかご教授お願い致します。
pgsql-jp メーリングリストの案内