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;
我想在一个语句中删除我的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
, CONSTRAINTFK_Student_Person
FOREIGN KEY (PersonID
) REFERENCESPerson
(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;