我有table1
和table2
。我需要从table1中删除所有行。当我尝试DELETE FROM table1
时出现此错误
1451 - 无法删除或更新父行:外键约束 失败(db_name.table2,CONSTRAINT table2_ibfk_4 FOREIGN KEY (table1_id)REFERENCES table1(id))
如何删除table1中的所有行,以及table1_id
中id
与table1
匹配的表2中的所有行?
答案 0 :(得分:1)
DELETE FROM table2 WHERE EXISTS
(
SELECT 1 FROM table1 WHERE table1.id = table2.table1_id
);
DELETE FROM table1;
答案 1 :(得分:1)
您的错误表示存在从table2
到table1
的外键引用的问题。要解决此问题,您可以选择以下几种方法:
table1
中table2
记录的记录,然后删除table1
中的记录ON DELETE CASCADE
添加到外键答案 2 :(得分:0)
首先删除table2然后删除table1
或删除前添加:
SET FOREIGN_KEY_CHECKS=0;
然后删除完成后:
SET FOREIGN_KEY_CHECKS=1;