尝试从多个表中删除多行时外键约束失败
Foreign Key constraint fails when trying to delete multiple rows from multiple tables
我想根据Staff.StaffID
删除staff
、login
和jobs
中的相应行,假设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 - 无法删除或更新父行:外键约束失败(younglife
。login
,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;
确保您以正确的顺序进行删除。
我想根据Staff.StaffID
删除staff
、login
和jobs
中的相应行,假设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 - 无法删除或更新父行:外键约束失败(younglife
。login
,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;
确保您以正确的顺序进行删除。