Postgresql 没有唯一的约束匹配引用表的给定键
我有一个postgresql表:Postgresql 没有唯一的约束匹配引用表的给定键,postgresql,Postgresql,我有一个postgresql表: CREATE TABLE Appointments( DateAndTime timestamp, RoomNumber integer, PRIMARY KEY(DateAndTime, RoomNumber)); 我正在尝试创建下表,其中的字段引用了第一个 CREATE TABLE AttendsAppointment( DateAndTime timestamp REFERENCES
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));
这是抛出标题中列出的错误,但我不明白为什么。有人知道吗?正如消息所说:没有与给定密钥匹配的唯一密钥。您希望引用约会的日期和时间,但它不是唯一的 外键引用唯一的键,通常是另一个表的主键。因此,可能有一个DateAndTimes表,其中包含所有DateAndTime值,而Appointment和AttentsAppointment可以引用该表 或者AttendasAppointment可以引用Appointment,但是您可以在这两个字段上构建外键。这两列在表中是唯一的
CREATE TABLE AttendsAppointment
(
DateAndTime timestamp,
RoomNumber integer,
PRIMARY KEY(DateAndTime, RoomNumber),
FOREIGN KEY(DateAndTime, RoomNumber) REFERENCES Appointments(DateAndTime, RoomNumber)
);