从MySQL表中删除3个表中的行

时间:2014-03-31 13:08:29

标签: php mysql doctrine-orm

我有3张桌子(我只提及所需的属性):

导入 iddate

import_head idimport_id

import_body idimport_head_id

import_headimport_body创建一个导入项,导入由数十个导入项创建 关系:导入 1 < ==> N * import_head * 1 < ==> 1 * import_body *(每个关系上的ON DELETE CASCADE)

如何在从导入表中删除行时删除所有导入项目?

使用DELETE FROM import WHERE id = ?删除导入时会抛出错误:SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails - import_head_id

提前多多感谢

3 个答案:

答案 0 :(得分:0)

修改子表中的外键并在删除时进行(CASCADE)
这应该适合你

答案 1 :(得分:0)

在从主键表中删除记录之前,您需要删除关联表的记录。我个人会因为性能影响而避免cascade删除,但这是您的决定。 Here is a thread正在讨论cascade的问题。

答案 2 :(得分:0)

我在DB中更改了实体,所以现在只有两个表:

import
import_item

我没有找到更好的东西,但它确实有用。