通过PhpMyAdmin复合外键约束?

时间:2011-05-16 16:31:20

标签: mysql foreign-keys phpmyadmin rdbms composite-key

有没有办法通过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。

1 个答案:

答案 0 :(得分:2)

我遇到了一个类似的问题,在phpMyAdmin中设置了一个复合外键,也许我的解决方案也可以为你提供帮助。

这是我的设置:

My setup

正如您所看到的,我在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,请设置其关系,然后再试一次。