J'ai une table de liaison many-to-many et j'essaie de mettre en place deux clés étrangères sur celle-ci. J'exécute ces deux instructions :
ALTER TABLE address_list_memberships
ADD CONSTRAINT fk_address_list_memberships_address_id
FOREIGN KEY index_address_id (address_id)
REFERENCES addresses (id);
ALTER TABLE address_list_memberships
ADD CONSTRAINT fk_address_list_memberships_list_id
FOREIGN KEY index_list_id (list_id)
REFERENCES lists (id);
Je m'attendrais à ce que lorsque j'exécute SHOW CREATE TABLE address_list_memberships
Je verrais bien ça :
[...]
KEY `index_address_id` (`address_id`),
KEY `index_list_id` (`list_id`),
CONSTRAINT `fk_address_list_memberships_list_id` FOREIGN KEY (`list_id`)
REFERENCES `lists` (`id`),
CONSTRAINT `fk_address_list_memberships_address_id` FOREIGN KEY (`address_id`)
REFERENCES `addresses` (`id`)
Mais à la place, j'obtiens ceci :
[...]
KEY `index_list_id` (`list_id`),
CONSTRAINT `fk_address_list_memberships_list_id` FOREIGN KEY (`list_id`)
REFERENCES `lists` (`id`),
CONSTRAINT `fk_address_list_memberships_address_id` FOREIGN KEY (`address_id`)
REFERENCES `addresses` (`id`)
Il semble qu'il n'y ait qu'un seul indice. Cela semble contredire la Documentation sur MySQL qui disent que MySQL crée automatiquement un index sur la colonne de référencement chaque fois que vous créez une clé étrangère.
J'ai remarqué ce problème d'index unique chaque fois que je crée deux FK sur une table, que j'utilise un outil graphique tel que CocoaMySQL ou SQLyog, ou que je le fasse en ligne de commande.
Tout éclaircissement de ce mystère serait très apprécié.