2011-10-18 4 views
0
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) 
); 

두 개의 외래 키는 어떻게 date_dimensionid 분야에 모두 from_dateto_date 참조 할 수 있습니다?
현재 코드는 말을포스트 그레스 : 동일한 기본 키 필드

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

당신에게 감사 그렇게하지

FOREIGN KEY 제약은 항상 referant에 행 *에 참조하는 테이블에 행을 관련하는 테이블에 추가

답변

5

. 참조의 각 행을 참조의 두 개의 별개의 행을 참조하도록하려면 두 개의 별도 외래 키 제약 조건이 필요합니다.

은 당신이 원하는 :

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

당신은 거의 항상 정확하게 외래 키의 행이 referant의 기본 키와 동일하게 갖고 싶어.

* 실제로 외래 키가 참조의 후보 키보다 작 으면 참조에 둘 이상의 행이있을 수 있습니다. 이것은 거의 유용하지는 않지만 당신이 묘사하고있는 문제와는 거의 무관하다.

+0

나는 이것을 지금 본다 - ERROR : "date_dimension"관계의 "id"열이 이미있다. – daydreamer

+0

@daydreamer : 그건 새로운 문제 같아. 지금까지 작성한 모든 코드로 새로운 질문을하십시오. – SingleNegationElimination

+0

안녕하세요 @ TokenMacGuy, 이것은 내 어리 석음 때문이었습니다. 해결책은 없습니다. 고마워. :) – daydreamer