当我尝试执行此删除查询时,SQL会给出以下错误:
“无法删除或更新父行:外键约束失败(carpooling
pedido
,约束pedido_ibfk_1
外键(ID_ROTA
)引用rota
(ID_ROTA
))”
查询:
DELETE rota,rota_alerta,pedido FROM rota
LEFT OUTER JOIN pedido ON rota.ID_ROTA=pedido.ID_ROTA
LEFT OUTER JOIN rota_alerta ON rota.ID_ROTA=rota_alerta.ID_ROTA
WHERE rota.ID_UTILIZADOR=26;
我试图删除“pedido”和“rota_alerta”中的所有行,这些行通过“id_rota”链接到表“rota”的行。此“id_rota”取决于表“rota”上具有相同“id_utilizador”(在本例中为26)的行数。
另外,我想删除所有具有指定“id_utilizador”的“rota”行。
我该怎么解决?
编辑
我忘记说我不想使用“级联约束”,因为有些情况下,我应该执行“delete rota where id_utilizador=26”(如注释中所述),并且避免删除子行(如果它们存在)。
最佳答案
我会先删除我的孩子收藏:
delete rota_alerta where rota_id in(select id_rota from rota where ID_UTILIZADOR=26)
delete pedido where rota_id in(select rota_id from rota where ID_UTILIZADOR=26)
delete rota where ID_UTILIZADOR=26
关于mysql - 来自多个表的SQL DELETE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8489073/