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。
我的 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。