我有一張桌子,上面有3列'玩家1','玩家2'和'贏家'。我想要'獲勝者'列引用'Player1'或'Player2'列。除了「玩家1」或「玩家2」的條目外,不得插入任何其他內容。我試了MySQL:如何引用同一張表上的兩列?
ALTER TABLE GAMES
ADD CONSTRAINT fk_winner FOREIGN KEY (WINNER) REFERENCES GAMES (PLAYER1, PLAYER2);
但我得到了一個錯誤。
我有一張桌子,上面有3列'玩家1','玩家2'和'贏家'。我想要'獲勝者'列引用'Player1'或'Player2'列。除了「玩家1」或「玩家2」的條目外,不得插入任何其他內容。我試了MySQL:如何引用同一張表上的兩列?
ALTER TABLE GAMES
ADD CONSTRAINT fk_winner FOREIGN KEY (WINNER) REFERENCES GAMES (PLAYER1, PLAYER2);
但我得到了一個錯誤。
不幸的是,你不能創建這樣的外鍵。如果您想在數據庫中執行此操作,則需要使用觸發器。
只需添加一個約束:
ALTER TABLE GAMES
ADD CHECK (WINNER = PLAYER1 OR WINNER = PLAYER2);
http://dev.mysql.com/doc/refman/5.0/en/create-table.html 「CHECK子句被解析,但被所有存儲引擎忽略」 – lazydaemon 2012-03-28 20:04:53
我可以建議的最好的是一個觸發器。我沒有意識到MySql忽略了它們。 – 2012-03-28 20:19:17
爲什麼不只是使擁有所有的唯一玩家第二個表的球員。然後在GAMES中,您可以使用Player1和Player2將該表索引到該表中。那麼贏家中的所有3列可能會有一個合理的外鍵約束。
引用列和引用列數不匹配。你當然可以在表格中引用兩列。但請參閱兩列兩列。
錯誤是什麼? – Cfreak 2012-03-28 19:31:35
錯誤1005(HY000):無法創建表'mydatabase。#sql-c4_4d'(errno:150) – lazydaemon 2012-03-28 19:38:07