【发布时间】:2012-04-20 19:20:17
【问题描述】:
您好,我目前有两个表,一个成员表与平常一样。
成员表
member_id SERIAL,
first_name varchar(20)
last_name varchar(20).
我有第二张桌子
规划师
day as varchar
time as varchar
activity varchar
member bigint
我将 member_id 定义为主键,不为空且唯一
我还设置了member是member_id的外键
所以这应该允许它只在成员中输入 ID 号并在规划器中输入,是吗?
目前我有四个成员,member_id 从 1 到 4 。 好吧,当我在下面尝试时,它仍然不允许我将数据插入到计划表中。
INSERT INTO planner VALUES ('monday','09:00','Rowing',2);
对我来说应该可以,但我收到了这个错误:
DETAIL Key (member)=(2) is not present in the table "members".
所以我目前很难过,任何帮助都会非常有帮助,谢谢大家。
【问题讨论】:
-
请向我们展示完整的
CREATE TABLE语句,而不是缩写的表描述,包括外键的定义。 -
member_id SERIAL是integer类型,而您的 FK 是member bigint。这不应该损害 FK 约束的操作,因为 Pg 知道如何将 bigint 转换为整数,但您确实应该使用相同的基本类型定义这两个,要么使成员整数或成员 IDbigserial。 -
一定有什么你没有告诉我们的,因为它确实有效(至少根据你提供的信息)。见这里:pastebin.com/YrdLLG1Q
标签: postgresql foreign-keys primary-key