MySQL:如何引用同一个表上的两列?

时间:2012-03-28 19:30:26

标签: mysql innodb

我有一个包含3列'Player1','Player2'和'Winner'的表格。我希望'Winner'列引用'Player1'或'Player2'列。除了'Player1'或'Player2'的条目之外,不应该插入任何其他内容。我用

试了一下
ALTER TABLE GAMES 
ADD CONSTRAINT fk_winner FOREIGN KEY (WINNER) REFERENCES GAMES (PLAYER1, PLAYER2); 

但我收到了错误。

4 个答案:

答案 0 :(得分:2)

不幸的是,你无法创建这样的外键。如果要在数据库中强制执行此操作,则需要使用触发器。

答案 1 :(得分:0)

只需添加一个约束:

ALTER TABLE GAMES
ADD CHECK (WINNER = PLAYER1 OR WINNER = PLAYER2);

答案 2 :(得分:0)

为什么不做一个拥有所有独特球员的第二桌球员。然后在GAMES中你可以用Player1和Player2索引到那个表。然后,获胜者中的所有3列都可以具有合理的外键约束。

答案 3 :(得分:0)

引用列和引用列的数量不匹配。您当然可以在表格中引用两列。但请参阅两列两列。