1

Advisor私は特別なテーブルを持っており、 (今のところ!)Userのみを含み、次のスクリプトで外部キーを作成しようとしています:iduser_iduser_id

ALTER TABLE advisor
ADD CONSTRAINT advisor_user_id_fkey
FOREIGN KEY (user_id) REFERENCES "user" (id);

これはうまくいくと思いますが、次のエラーが発生します。

ERROR: insert or update on table "advisor" violates foreign key constraint "advisor_user_id_fkey"
SQL state: 23503
Detail: Key (user_id)=(44) is not present in table "user".

user.idを参照すべきであり、 を参照すべきではないと言っているので、これは奇妙だと思いますがuser.user_id、明らかに私は何か間違ったことをしています。誰かこれについて何か考えがありますか?ありがとう。

更新:なぜユーザーではなく「ユーザー」なのか疑問に思っている人がいれば、pgAdminはユーザーがデータベースの所有者であると考えているため、ユーザーが好きではありません。

4

1 に答える 1

3

エラー メッセージは、「user」テーブルに存在しない「advisor」テーブル (44) にエントリがあることを示しています。

外部キーは「advisor」で定義され、「user」テーブルが親テーブルであることを規定しています。おそらく、その外部キーを後方に定義していますか?

「ユーザー」の問題については、「ユーザー」は予約語であるため、pgadmin で問題が発生しています。それを変える能力があるなら、私はそれをお勧めします。http://www.postgresql.org/docs/current/static/sql-keywords-appendix.htmlで予約語を参照してください。

于 2013-10-28T18:00:03.470 に答える