MySQL: как ссылаться на два столбца в одной таблице? - PullRequest
0 голосов
/ 28 марта 2012

У меня есть таблица с 3 столбцами «Player1», «Player2» и «Winner».Я хочу, чтобы столбец «Победитель» ссылался на столбец «Player1» или «Player2».Ничего другого не должно быть вставлено, кроме записи «Player1» или «Player2».Я пробовал это с

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

, но я получил ошибку.

Ответы [ 4 ]

2 голосов
/ 28 марта 2012

К сожалению, вы не можете создать такой внешний ключ. Если вы хотите применить это в базе данных, вам нужно использовать триггер.

0 голосов
/ 29 марта 2012

Количество ссылочных и ссылочных столбцов не совпадает. Конечно, вы можете ссылаться на два столбца в таблице. Но обратитесь к двум столбцам с двумя столбцами.

0 голосов
/ 29 марта 2012

Почему бы просто не сделать второй стол ИГРОКОВ, в котором есть все уникальные игроки.Тогда в GAMES вы можете просто внести в эту таблицу данные с Player1 и Player2.тогда все 3 столбца в winner могут иметь ограничение внешнего ключа, которое имеет смысл.

0 голосов
/ 28 марта 2012

Просто добавьте ограничение:

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