有没有办法通过PhpMyAdmin接口向InnoDB表添加复合(多列)外键?我已经在目标表中有了相应的复合主键,我可以单列外键约束,但我在界面中找不到复合键的方法。
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关系视图,我只能看到如何针对Log.Date设置FK,而不是针对Log.Service。
答案 0 :(得分:2)
我遇到了一个类似的问题,在phpMyAdmin中设置了一个复合外键,也许我的解决方案也可以为你提供帮助。
这是我的设置:
正如您所看到的,我在ConferenceRoom表中有一个复合主键,其中一部分也是表Office中streetaddress
的外键(这可能与您的问题不同)。
这个复合主键将由表InstPicture中的复合外键引用,但问题是,尽管已将两者都定义为主键索引,但phpMyAdmin仅引用name
列中的office_streetaddress
列。 ConferenceRoom主键,而不是office_streetaddress
列。
我在这里缺少的是,在尝试设置ConferenceRoom和InstPicture之间的关系之前,我没有在ConferenceRoom和Office 之间建立关系。我想我首先忘了处理强大的问题,正如数据库方法所规定的那样。
当在ConferenceRoom和Office之间定义关系时,conferenceroom_office_streetaddress
列显示在索引列的列表中,并且可以由表InstPicture中的{{1}}列引用。
我希望这也可以帮到你,也许尝试为你的Log.Service列创建一个单独的索引。或者如果那是FK,请设置其关系,然后再试一次。