MySQL : 外键

MySQL : Foreign Key

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

我已将 member_name 设置为成员 table 中的 UNIQUE 并尝试将其设置为外键,但出现错误:

Cannot add or update a child row: a foreign key constraint fails

谁能告诉我为什么会出现此错误?

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

在任何情况下,该错误很可能表明现有数据集中存在违反外键约束的记录,即 awards [=17] 中的 member_name =] members table.

中不存在

您的错误表明您正试图插入一个子行,而其对应的行在其主行中不存在 table。所以首先插入 master table 然后插入 child.

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

如果不是这种情况,请分享您的 table 结构和您的更改查询以生成外键。

注意:外键对于 int 数据类型总是比 string 具有更好的性能。因此,如果没有特定原因,您应该保留 member_id 而不是 member_name。