(MySQL) Первичный ключ с двумя внешними ключами - PullRequest
1 голос
/ 08 марта 2012

У меня есть 3 таблицы:

Users: _id_, username
Movies: _id_, title
Friends: _#id1, #id2_, accepted

Я с InnoDB, все работает так.Но, даже если первичным ключом друзей является (users.id, users.id), MySQL принимает 2 подобные строки:

1) (1, 2)
2) (2, 1)

Можно ли считать эти 2 строки дубликатамиключ для MySQL?Спасибо за вашу помощь.

1 Ответ

1 голос
/ 08 марта 2012

Я не могу придумать, как MySQL самостоятельно решит эту проблему.Я бы использовал GREATEST (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_greatest) и LEAST (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least) для любой вставки / обновления в этой таблице:

INSERT INTO friends (LEAST(_#id1, _#id2), GREATEST(_#id1, _#id2));

Так что вы никогда не получите (2, 1)и всегда иметь (1, 2).

...