我想根据staff删除loginjobsStaff.StaffID中的相应行,因为StaffIDLoginIDjobs中的外键。此外,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-无法删除或更新父行:外键约束失败(younglifelogin,CONSTRAINT FK_59外国密钥(StaffID)参考staffStaffID ))”

我可以说这是无效的,我想知道什么是最好的方法。谢谢。

最佳答案

您可以运行三个删除操作:

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/

10-14 16:20