#mysql #foreign-keys #phpmyadmin #rdbms #composite-key
#mysql #внешние ключи #phpmyadmin #rdbms #составной ключ
Вопрос:
Есть ли способ добавить составной (многоколоночный) внешний ключ в таблицу InnoDB через интерфейс phpMyAdmin? У меня уже есть соответствующий составной первичный ключ в целевой таблице, и я могу ограничить внешний ключ одним столбцом, но я не могу найти способ в интерфейсе, чтобы сделать составной.
Table Log
- Date
- Service
PRIMARY KEY (Date,Service)
Table Issue
- Issue_Id
- Log_Date
- Log_Service
PRIMARY KEY Issue_Id
FOREIGN KEY (Log_Date=Log.Date,Log_Service=Log.Service)
Все уже настроено, кроме внешнего ключа; Я захожу в представление отношений phpMyAdmin и вижу только, как настроить FK для журнала.Дата, а не против Log.Service вообще.
Комментарии:
1. Вы когда-нибудь находили ответ? Я могу только выяснить, как настроить простые ограничения FK в phpMA.
Ответ №1:
Я только что столкнулся с аналогичной проблемой при настройке составного внешнего ключа в phpMyAdmin, и, возможно, мое решение могло бы помочь и вам.
Вот моя настройка:
Как вы можете видеть, у меня есть составной первичный ключ в моей таблице ConferenceRoom, часть которого также является внешним ключом к streetaddress
в table Office (это может отличаться от вашей проблемы).
На этот составной первичный ключ должен ссылаться составной внешний ключ в table Insticture, но проблема для меня заключалась в том, что, несмотря на то, что оба были определены как индексы первичного ключа, phpMyAdmin будет ссылаться только на name
столбец в первичном ключе ConferenceRoom, а не на office_streetaddress
столбец.
Чего мне здесь не хватало, так это того, что я не настроил связь между ConferenceRoom и Office перед попыткой настроить связь между ConferenceRoom и InstPicture. Полагаю, я забыл сначала обработать сильные стороны, как того требует методология базы данных.
Когда связь между конференц-залом и Office была определена, office_streetaddress
столбец отображался в списке индексированных столбцов, и на него мог ссылаться conferenceroom_office_streetaddress
столбец в table InstPicture.
Я надеюсь, что это также могло бы вам помочь, возможно, попробуйте создать отдельный индекс для вашего столбца Log.Service. Или, если это FK, настройте его отношения, а затем повторите попытку.