我有一个名为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_id
和person_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/