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

day*_*mer 1 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)
);  
Run Code Online (Sandbox Code Playgroud)

我怎样才能既指from_dateto_dateid现场date_dimension
目前的代码没有这样说

ERROR:  there is no unique constraint matching given keys for referenced table "date_dimension"  
Run Code Online (Sandbox Code Playgroud)

谢谢

Sin*_*ion 6

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

你要:

foreign key (from_date) references date_dimension(id)
foreign key (to_date) references date_dimension(id)
Run Code Online (Sandbox Code Playgroud)

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

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