У меня есть таблица связывания «многие ко многим», и я пытаюсь установить на нее два внешних ключа. Я запускаю эти два утверждения:
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);
Я ожидал бы, что когда я запущу SHOW CREATE TABLE address_list_memberships
, я увижу это:
[...]
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`)
Но вместо этого я получаю это:
[...]
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`)
Похоже, там только один индекс. Кажется, что это противоречит MySQL документам , в которых говорится, что MySQL автоматически создает индекс в столбце ссылок при создании внешнего ключа.
Я заметил эту вещь, состоящую только из одного индекса, каждый раз, когда я создаю два FK для таблицы, использую ли я инструмент GUI, такой как CocoaMySQL или SQLyog, или делаю это в командной строке.
Любое освещение этой тайны будет очень цениться.