我有一个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/