Ограничение за съставен външен ключ чрез 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