postgreSQL主/外键不符合

时间:2012-04-20 19:20:18

标签: postgresql foreign-keys primary-key

嗨,我目前有两张表与平时一样的成员表。

会员表

member_id SERIAL, 
first_name varchar(20)
last_name varchar(20).

我有第二张表

计划者

day as varchar
time as varchar
activity varchar
member bigint

我将member_id定义为主键,而不是null和唯一

我还设置了该成员是member_id

的foregin键

所以这应该允许它只允许成员中的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".

所以我现在很难过,感谢大家,任何帮助都会非常有用。

1 个答案:

答案 0 :(得分:1)

它没有用,因为继承对外键不能很好地工作。使用当前版本的PostgreSQL

我必须创建一个规则让它工作

create rule fake_ref
as on insert to planner
where new.member not in (select member_id from members)
do instead nothing;