No unique constraint matching given keys for referenced table

后端 未结 3 1036
臣服心动
臣服心动 2021-01-17 08:37

I have a date_dimension table definition:

CREATE TABLE date_dimension
(
  id integer primary key,
  date text,
  year double precision,
  year         


        
相关标签:
3条回答
  • 2021-01-17 09:20

    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)
    
    0 讨论(0)
  • 2021-01-17 09:22

    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);
    
    0 讨论(0)
  • 2021-01-17 09:23

    Don't you just want to create two separate foreign key references to the date dimension as follows:

    create table fact ( 
        id serial primary key,
        contract integer,
        component integer,
        evaluation_date integer,
        effective_date integer,
        foreign key (evaluation_date) references date_dimension(id),
        foreign key (effective_date) references date_dimension(id)
    );
    
    0 讨论(0)
提交回复
热议问题