DELETE logins, roles
FROM logins
INNER JOIN roles ON logins.`LOGIN_ID`=roles.`LOGIN_ID`
WHERE roles.`LOGIN_ID`=25774;
查询:删除登录名,来自登录名的角色INNER JOIN角色开启
LOGIN_ID
=角色。LOGIN_ID
角色。LOGIN_ID
= 25774错误代码:1451无法删除或更新父行:外键 约束失败(
foodapp
。roles
,约束roles_ibfk_1
FOREIGN KEY(LOGIN_ID
参考(logins
(LOGIN_ID
))执行时间:0秒传输时间:0秒总时间:0.038 秒
答案 0 :(得分:0)
如果没有ON CASCADE DELETE
约束设置,则需要首先从子表中删除行。然后,触发一个单独的查询,以将其也从父表中删除。
DELETE FROM roles
WHERE roles.`LOGIN_ID`=25774;
然后,从父表中删除:
DELETE FROM logins
WHERE logins.`LOGIN_ID`=25774;
如果您使用涉及InnoDB表的多表DELETE语句 对于有外键约束的情况,MySQL优化器可能 处理表的顺序不同于它们的顺序 父母/子女关系。在这种情况下,该语句将失败并滚动 背部。相反,您应该从单个表中删除并依靠 InnoDB提供的ON DELETE功能导致其他表 进行相应的修改。
如果在外键定义中使用了ON CASCADE DELETE
,那么您只需要从父表中删除即可。它将自动从子表中删除相应的行。