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

问题描述 投票:0回答:2
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_date
引用到
id
中的
date_dimension
字段?
当前的代码无法做到这一点

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

谢谢你

database postgresql foreign-keys
2个回答
8
投票
添加到表中的每个

FOREIGN KEY

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

你想要:

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

您几乎总是希望外键中的行与所指对象中的主键完全相同。

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


0
投票
创建表 date_dimension ( id序列主键, 日期 日期, );

如何使用两个键 from_date 和 to_date 从同一字段“date”中选择两个日期(通过加入 date_dimensions 表)???

查询:

选择日期_维度.日期、日期_维度.日期 从... 左加入...

将不起作用,因为应选择 date_dimensions 中的两个相同字段,即使它们由不同的键(from_date)和(to_date)引用!

那么,如何从同一个表、同一个字段中选择两个不同的日期呢?

© www.soinside.com 2019 - 2024. All rights reserved.