I have a date_dimension
table definition:
CREATE TABLE date_dimension
(
id integer primary key,
date text,
year double precision,
year_for_week double precision,
quarter double precision
);
I am trying to create a fact
table that fails
create table fact (
id serial primary key,
contract integer,
component integer,
evaluation_date integer,
effective_date integer,
foreign key (evaluation_date, effective_date) references date_dimension(id, id)
);
The error is :
ERROR: there is no unique constraint matching given keys for referenced
table "date_dimension"
SQL state: 42830
I am not sure how to fix this.
The error tells you the problem: You don't have a unique constraint on date_dimension
that matches your foreign key constraint.
However, this leads to the bigger design problem: Your foreign key relationship doesn't make any sense.
You could possibly solve your "problem" with:
CREATE UNIQUE INDEX date_dimension(id,id);
But that's dumb, because id
is always the same. It could also be expressed as:
FOREIGN KEY (evaluation_date) REFERENCES date_dimension(id);
Then getting rid of the effective_date
column, which would always be identical to evaluation_date
in your example.
Or... you probably really want two FK relationships:
FOREIGN KEY (evaluation_date) REFERENCES date_dimension(id);
FOREIGN KEY (effective_date) REFERENCES date_dimension(id);
I think you are looking for two separate foreign keys:
foreign key (evaluation_date) references date_dimension(id),
foreign key (effective_date) references date_dimension(id)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With