我想在一个Statement中删除MySql-Database中的多行,并根据MySQL Reference编写了一个语句。
这是我的声明:
DELETE S, P, E
FROM Person P
JOIN Student S ON S.PersonID = P.PersonID
JOIN Employee E ON E.PersonID = P.PersonID
WHERE P.Date < '2010-01-01';
会抛出以下错误:
无法删除或更新父行:外键约束失败 (
DB
。Student
,CONSTRAINTFK_Student_Person
FOREIGN KEY (PersonID
)参考Person
(PersonID
))
我的错误是什么?
将此语句拆分为3并删除该订单中的员工,学生和个人。
答案 0 :(得分:2)
您无法从Person表中删除记录,因为对于表,Student具有PersonID的外键。如果您仍想删除记录,则可以使用此类查询
SET FOREIGN_KEY_CHECKS = 0;
DELETE S, P, E
FROM Person P
JOIN Student S ON S.PersonID = P.PersonID
JOIN Employee E ON E.PersonID = P.PersonID
WHERE P.Date < '2010-01-01';
SET FOREIGN_KEY_CHECKS = 1;