问题:
如果table2中没有记录,那么我可以创建一个外键,但是如果有记录,我们如何创建外键。
我必须在Table2中创建外键。我试过以下查询
ALTER TABLE Table2
ADD CONSTRAINT FK_User_id
FOREIGN KEY(User_id) REFERENCES Table1(Id)我在phpMyadmin中出错了
1452 -无法添加或更新子行:外键约束失败
发布于 2016-12-06 09:10:51
您的错误说,它不能创建外键,因为有一些值,它不能映射。因此,在执行此操作之前,请确保Table2中的所有引用数据都存在于Table1的主键中。
查询每个表中的不同值,查看差异所在,并在尝试重新运行alter脚本之前修复数据。
在您的评论之后更新:
在Table2中,我创建了User_id列,其默认值为0。
针对上面的注释,您应该使用NULL作为默认值,而不是0,并且它应该可以工作。您需要运行像这样的更新脚本才能将0值更改为NULL:
UPDATE Table2
SET User_Id = NULL
WHERE User_Id = 0标记的答案是建议删除在Table1中不引用记录的数据,但这可能很危险,因为Table2中的记录在不加入Table1时可能是有效的。
例如,假设Table1是CarBuyer,Table2是CarsForSale。CarsForSale有一个用于购买汽车的人的列,该列只有在购买汽车时才会填充,否则应该是NULL。另一个答案是,建议删除所有没有买家的汽车。
https://stackoverflow.com/questions/40991526
复制相似问题