我的MySQL数据库中有两个表,包括奖项和成员。我想将member_name作为外键设置为awards表而不是member_id。
我在member表中将member_name设置为UNIQUE并尝试将其设置为外键但我收到错误:
无法添加或更新子行:外键约束失败
有人能告诉我为什么会收到此错误吗?
答案 0 :(得分:1)
您的错误显示您正在尝试插入子行,而其主表中的相应行不存在。所以首先在主表中插入然后在子表中插入。
如果不是这种情况,那么您还可以检查您是否正在尝试在成员表中创建外键member_name作为字符串,其中member_id为int表中的int,而要使外键关系两个字段数据类型应该是相同。
如果不是这种情况,则分享您的表结构和您的alter query以生成外键。
注意:外键总是以int数据类型比字符串更好地执行。因此,如果没有特定的原因,你应该保留member_id而不是member_name。
答案 1 :(得分:0)
如果您提供了更多详细信息,那么回答这个问题会更容易 两种表结构。
在任何情况下,错误很可能表明现有数据集中存在违反外键约束的记录,即member_name
表中的awards
没有存在于members
表中。