我有一个名为events的表,其中event_id为主键,而一个表person则为person_id为主键。

我想要一个包含两列event_id和person_id的表,作为上述两个主键的外键。

我能够创建一个像这样的外键:

create table pe(
event_id INTEGER UNSIGNED UNIQUE,
person_id INTEGER UNSIGNED UNIQUE,
FOREIGN KEY (event_id) REFERENCES events(event_id),
FOREIGN KEY (person_id) REFERENCES person(person_id)
);


但是我不能插入像这样的值:

----------------------
event_id person_id
----------------------
1 1
1 2
2 1
2 2
----------------------


为此,我需要一个复合外键。

我无法决定该怎么做。任何建议或帮助,不胜感激!

非常感谢!

最佳答案

您需要使event_idperson_id的组合唯一。我只是将组合作为主键,如下所示:

create table pe(
  event_id INTEGER UNSIGNED,
  person_id INTEGER UNSIGNED,
  FOREIGN KEY (event_id) REFERENCES events(event_id),
  FOREIGN KEY (person_id) REFERENCES person(person_id),
  PRIMARY KEY (event_id, person_id)
);

关于php - 在主键上创建复合外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16651159/

10-16 18:53