mysql # 1452 -无法添加或更新子行:表上的外键约束失败

8yoxcaq7  于 2022-12-26  发布在  Mysql
关注(0)|答案(1)|浏览(161)

我有两个表,分别是departements表和students表,在我的外键上使用此模式

departements.id = students.departement_id

我试图删除我的一个departement.id但它返回一个错误

#1452 - Cannot add or update a child row: a foreign key constraint fails (`u1556075_sia_uiii2`.`#sql-f847_33d3d1a`, CONSTRAINT `departements_fk2` FOREIGN KEY (`id`) REFERENCES `students` (`departement_id`)

老实说,我不知道是什么原因导致了这种情况,因为我在student上外键就是这样的

ALTER TABLE `students` ADD CONSTRAINT `students_fk2` FOREIGN KEY (`departement_id`) REFERENCES `departements`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
vd2z7a6w

vd2z7a6w1#

如果students中有一个或多个行引用了departments中行的部门ID,则不能删除该行。原因是,如果要删除departments中的行,则students中的某些行将引用数据库中不再存在的部门ID,这将违反外键约束。
必须首先更新students表,以更改与要删除的系相匹配的行的系ID。要么将这些学生更改为其他系,要么将department_id设置为NULL。或者,我认为删除students中的行也可以,但我认为您不想这样做。

相关问题