Составное ограничение внешнего ключа через PhpMyAdmin?

Есть ли способ добавить составной (многостолбцовый) внешний ключ в таблицу 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.Date, а не для Log.Service вообще.


person BCoates    schedule 16.05.2011    source источник
comment
Вы когда-нибудь находили ответ? Я могу только понять, как настроить простые ограничения FK в phpMA.   -  person    schedule 25.06.2012


Ответы (1)


Я только что столкнулся с похожей проблемой при настройке составного внешнего ключа в phpMyAdmin, и, возможно, мое решение поможет вам.

Вот моя установка:

Мои настройки

Как видите, у меня есть составной первичный ключ в моей таблице ConferenceRoom, часть которого также является внешним ключом для streetaddress в таблице Office (это может отличаться от вашей проблемы).

На этот составной первичный ключ должен ссылаться составной внешний ключ в таблице InstPicture, но проблема для меня заключалась в том, что, несмотря на определение обоих индексов первичного ключа, phpMyAdmin будет ссылаться только на столбец name в первичном ключе ConferenceRoom, а не столбец office_streetaddress.

Чего мне здесь не хватало, так это того, что я не установил связь между ConferenceRoom и Office до попытки установить связь между ConferenceRoom и InstPicture. Я думаю, я забыл сначала обработать сильные объекты, как диктует методология базы данных.

Когда связь между ConferenceRoom и Office была определена, столбец office_streetaddress появился в списке проиндексированных столбцов, и на него мог ссылаться столбец conferenceroom_office_streetaddress в таблице InstPicture.

Я надеюсь, что это может помочь и вам, возможно, попробуйте создать отдельный индекс для вашего столбца Log.Service. Или, если это FK, настройте его отношения и повторите попытку.

person user1503823    schedule 05.07.2012