2011-10-18 12 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の両方を参照することができますか?
現在のコードは言っのPostgres:同じ主キーフィールドに2つの外部キー

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

はありがとうございますことをやって失敗し

FOREIGN KEY制約は常にreferantに行*への参照テーブルに行に関連しますテーブルに追加

答えて

5

。参照の各行が参照の2つの異なる行を参照するようにするには、2つの独立した外部キ​​ー制約が必要です。あなたが欲しい

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

あなたはほとんど常にreferantの主キーと同じになるように、外部キーで正確に行を持っていると思います。

*実際には、外部キーが参照元の候補キーよりも小さい場合、参照先に複数の行が存在することがあります。しかし、これはあまり役に立ちませんが、あなたが描いている問題とはまったく関係がありません

+0

私は今これを見ています - 関係の "ID"列 "date_dimension"はすでに存在します – daydreamer

+0

@daydreamer:あなたがこれまで持っていたすべてのコードで新しい質問をしてください。 – SingleNegationElimination

+0

こんにちは@TokenMacGuy、これは私の愚かさ、あなたのソリューションの岩です!ありがとうございます:) – daydreamer

関連する問題