MySQL在一个语句中删除多行

时间:2015-02-03 08:44:18

标签: mysql sql-delete

我想在一个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';

会抛出以下错误:

  

无法删除或更新父行:外键约束失败   (DBStudent,CONSTRAINT FK_Student_Person FOREIGN KEY   (PersonID)参考PersonPersonID))

我的错误是什么?

将此语句拆分为3并删除该订单中的员工,学生和个人。

1 个答案:

答案 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;