通过 PhpMyAdmin 的复合外键约束?
Posted
技术标签:
【中文标题】通过 PhpMyAdmin 的复合外键约束?【英文标题】:Composite Foreign Key Constraint via PhpMyAdmin? 【发布时间】:2011-08-26 14:22:45 【问题描述】:有没有办法通过 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 而不是针对 Log.Service 设置 FK。
【问题讨论】:
你找到答案了吗?我只能弄清楚如何在 phpMA 中设置简单的 FK 约束。 【参考方案1】:我刚刚在 phpMyAdmin 中设置复合外键时遇到了类似的问题,也许我的解决方案也可以帮助您。
这是我的设置:
如您所见,我的 ConferenceRoom 表中有一个复合主键,其中一部分也是 Office 表中streetaddress
的外键(这可能与您的问题不同)。
这个复合主键将被 InstPicture 表中的复合外键引用,但对我来说,问题是,尽管将两者都定义为主键索引,phpMyAdmin 只会引用 ConferenceRoom 中的 name
列主键,而不是 office_streetaddress
列。
我在这里缺少的是,在尝试设置 ConferenceRoom 和 InstPicture 之间的关系之前,我还没有设置 ConferenceRoom 和 Office 之间的关系。我想我忘了首先处理强大的实体,因为数据库方法要求。
定义 ConferenceRoom 和 Office 之间的关系后,office_streetaddress
列出现在索引列列表中,并且可以被 InstPicture 表中的 conferenceroom_office_streetaddress
列引用。
我希望这也能对您有所帮助,也许可以尝试为您的 Log.Service 列创建一个单独的索引。或者,如果那是 FK,请设置其关系,然后重试。
【讨论】:
以上是关于通过 PhpMyAdmin 的复合外键约束?的主要内容,如果未能解决你的问题,请参考以下文章
一般错误:1005 无法创建表 errno:150“外键约束格式不正确”)