我有一个postgresql表:

    CREATE TABLE Appointments(
        DateAndTime timestamp,
        RoomNumber integer,
    PRIMARY KEY(DateAndTime, RoomNumber));

并尝试使用引用第一个
    CREATE TABLE AttendsAppointment(
        DateAndTime timestamp REFERENCES Appointments(DateAndTime),
        RoomNumber integer REFERENCES Appointments(RoomNumber),
    PRIMARY KEY(DateAndTime, RoomNumber));

这是抛出标题中列出的错误,但我不明白为什么。有人知道吗?

最佳答案

如消息所示:没有与给定密钥匹配的唯一密钥。您想要引用约会的日期和时间,但它不是唯一的。
外键引用另一个表的唯一键(通常是主键)。所以可能有一个包含所有date和time值的表DateAndTimes,而Appointments和AttendsAppointment可以引用该表。
或者AttendsAppointment可以引用Appointment,但是您将在这两个字段上构建外键。这两列在表约会中是唯一的。

CREATE TABLE AttendsAppointment
(
  DateAndTime timestamp,
  RoomNumber integer,
  PRIMARY KEY(DateAndTime, RoomNumber),
  FOREIGN KEY(DateAndTime, RoomNumber) REFERENCES Appointments(DateAndTime, RoomNumber)
);

关于postgresql - 没有与引用表的给定键匹配的唯一约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27159951/

10-09 06:08