MySQL:外键

时间:2015-09-08 09:07:28

标签: mysql database phpmyadmin

我的MySQL数据库中有两个表,包括奖项和成员。我想将member_name作为外键设置为awards表而不是member_id。

我在member表中将member_name设置为UNIQUE并尝试将其设置为外键但我收到错误:

  

无法添加或更新子行:外键约束失败

有人能告诉我为什么会收到此错误吗?

2 个答案:

答案 0 :(得分:1)

您的错误显示您正在尝试插入子行,而其主表中的相应行不存在。所以首先在主表中插入然后在子表中插入。

如果不是这种情况,那么您还可以检查您是否正在尝试在成员表中创建外键member_name作为字符串,其中member_id为int表中的int,而要使外键关系两个字段数据类型应该是相同。

如果不是这种情况,则分享您的表结构和您的alter query以生成外键。

注意:外键总是以int数据类型比字符串更好地执行。因此,如果没有特定的原因,你应该保留member_id而不是member_name。

答案 1 :(得分:0)

如果您提供了更多详细信息,那么回答这个问题会更容易 两种表结构。

在任何情况下,错误很可能表明现有数据集中存在违反外键约束的记录,即member_name表中的awards没有存在于members表中。