Postgres:相同主键字段的两个外键

时间:2011-10-18 23:37:47

标签: database postgresql foreign-keys

create table date_dimension (
id serial primary key,
date_id date,
..... others
);

create table temp (
id serial primary key,
from_date integer,
to_date integer,
value integer,
foreign key (from_date, to_date) references date_dimension(id, id)
);  

如何在from_date中将to_dateid引用至date_dimension字段? 当前的代码没有这么说

ERROR:  there is no unique constraint matching given keys for referenced table "date_dimension"  

谢谢

1 个答案:

答案 0 :(得分:5)

添加到表中的每个FOREIGN KEY约束将始终将引用表中的一个行与referant中的一个行*相关联。如果您希望引用中的每一行引用referant中的两个不同的行,则需要两个单独的外键约束。

你想要:

foreign key (from_date) references date_dimension(id)
foreign key (to_date) references date_dimension(id)

您几乎总是希望外键中的行与referant中的主键完全相同。

*实际上,如果外键小于反叛者的候选键,则反叛者中可能有多行。但这很少有用,而且几乎肯定与您描述的问题无关