Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 没有唯一的约束匹配引用表的给定键_Postgresql - Fatal编程技术网

Postgresql 没有唯一的约束匹配引用表的给定键

Postgresql 没有唯一的约束匹配引用表的给定键,postgresql,Postgresql,我有一个postgresql表: CREATE TABLE Appointments( DateAndTime timestamp, RoomNumber integer, PRIMARY KEY(DateAndTime, RoomNumber)); 我正在尝试创建下表,其中的字段引用了第一个 CREATE TABLE AttendsAppointment( DateAndTime timestamp REFERENCES

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

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

正如消息所说:没有与给定密钥匹配的唯一密钥。您希望引用约会的日期和时间,但它不是唯一的

外键引用唯一的键,通常是另一个表的主键。因此,可能有一个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)
);