MySQL 一条语句删除多行

MySQL delete multiple rows in one statement

我想在一个语句中删除我的MySql-数据库中的多行,我根据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';

会引发以下错误:

Cannot delete or update a parent row: a foreign key constraint fails (DB.Student, CONSTRAINT FK_Student_Person FOREIGN KEY (PersonID) REFERENCES Person (PersonID))

我的错误是什么?

将此语句拆分为 3 份并按此顺序删除 Employee、Student 和 Person 有效。

您不能从 Person table 中删除记录,因为 table 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;