我想根据staff
删除login
,jobs
和Staff.StaffID
中的相应行,因为StaffID
和LoginID
是jobs
中的外键。此外,StaffID
也是login
中的外键。当我使用以下查询时,我收到关于前键约束失败的错误。有任何想法吗?
SQL:
DELETE jobs, login, staff
FROM jobs
INNER JOIN login
WHERE login.LoginID=jobs.loginID
AND staff.StaffID = '18';
显然,这是不完整的。我想在AND之前继续执行INNER JOINING,以便进行内部联接登录。StaffID= staff.StaffID以及staff.StaffID = jobs.JobID。但是,当我这样做时,出现错误:
DELETE jobs, login, staff
FROM jobs
INNER JOIN login, staff
WHERE login.LoginID=jobs.LoginID
AND staff.StaffID=login.StaffID
AND staff.StaffID = login.LoginID
AND staff.StaffID = '18';
出现错误:“#1451-无法删除或更新父行:外键约束失败(
younglife
。login
,CONSTRAINT FK_59
外国密钥(StaffID
)参考staff
(StaffID
))”我可以说这是无效的,我想知道什么是最好的方法。谢谢。
最佳答案
您可以运行三个删除操作:
DELETE j
FROM jobs j JOIN
login l
ON l.LoginID = j.LoginID
WHERE l.StaffID = 18;
DELETE l
FROM login l
WHERE l.StaffID = 18;
DELETE s
FROM staff s
WHERE s.StaffID = 18;
确保以正确的顺序进行删除。
关于mysql - 尝试从多个表中删除多行时,外键约束失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56440763/