尝试从多个表中删除多行时外键约束失败

Foreign Key constraint fails when trying to delete multiple rows from multiple tables

我想根据Staff.StaffID删除staffloginjobs中的相应行,假设StaffID和[=17] =] 是 jobs 中的外键。此外,StaffID 也是 login 中的外键。当我使用以下查询时,出现有关 foregin 键约束失败的错误。有什么想法吗?

SQL:

DELETE jobs, login, staff 
FROM jobs 
    INNER JOIN login 
WHERE login.LoginID=jobs.loginID 
AND staff.StaffID = '18';

显然这是不完整的。我想在 AND 之前继续 INNER JOINING,以便内部联接 login.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 - 无法删除或更新父行:外键约束失败(younglifelogin,CONSTRAINT FK_59 FOREIGN KEY(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;

确保您以正确的顺序进行删除。