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

时间:2019-06-04 09:06:39

标签: mysql sql inner-join sql-delete multiple-tables

鉴于stafflogin,我想根据jobs删除Staff.StaffIDStaffIDLoginID中的相应行是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-无法删除或更新父行:外键约束失败(younglifelogin,CONSTRAINT FK_59外部键({{1 }})参考文献StaffIDstaff))“

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

1 个答案:

答案 0 :(得分:1)

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

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;

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