使用复合外键创建错误条目

时间:2012-11-04 02:40:42

标签: foreign-keys key foreign-key-relationship composite-key

我正在使用MySQL数据库。我有两个表,表1和表2.表1中有一个复合主键。表2中有一个复合外键,它引用表1中的复合PK。

我遇到的问题如下所示:

表1 | ------------ ----------- PK |
menuid | CATEGORYID |类别名
1 | 1 | myCategoryName1
1 | 2 | myCategoryName2
2 | 1 | myCategoryName3
2 | 2 | myCategoryName4
2 | 3 | myCategoryName5

我可以在表2中创建一个引用表1中的错误条目的条目:

表2 | FK ------------ ----------- | | ---- ---- PK |
菜单ID | CATEGORYID | postid | post name
1 | 3 | 1 | myPostName

现在,这不是一个大问题,因为我可以将有效值插入数据库。但是,这似乎是数据库中的关系错误,我希望有一个干净,功能正常的数据库。有没有办法纠正这个小问题?

UPDATE:我使用phpMyAdmin来实现我的数据库,显然没有办法在phpMyAdmin中实现复合外键。我能够通过

查看我错误实现的外键

SHOW CREATE TABLE Table2

其中Table2是具有复合外键的第二个表的名称。

然后我通过

手动正确添加了复合外键

ALTER TABLE Table2 ADD CONSTRAINT my_fk_constraint
FOREIGN KEY (menuid, categoryid)
REFERENCES Table1(menuid, categoryid)

其中my_fk_constraint是要添加的约束的名称。

注意:以这种方式手动添加外键约束不允许您在插入新条目时使用下拉菜单(也不能通过单击FK列来引用相应的表),如你通常可以在phpMyAdmin。

感谢pstthedayofcondor,你们都是正确的,因为我是一个使用phpMyAdmin的小恶魔。

1 个答案:

答案 0 :(得分:1)

正确:不,防止:是的!

如果正确设置约束,则不应发生这种情况: http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html