当我尝试执行此删除查询时,SQL会给我这个错误:
“无法删除或更新父行:外键约束失败(carpooling
。pedido
,CONSTRAINT pedido_ibfk_1
FOREIGN KEY(ID_ROTA
)参考{{1} }(rota
))“
查询:
ID_ROTA
我正在尝试删除“pedido”和“rota_alerta”中的所有行,这些行通过“ID_ROTA”链接到一行表“rota”。这个“ID_ROTA”取决于表“rota”上具有相同“ID_UTILIZADOR”(在本例中为26)的行数。
另外,我想删除所有具有指定“ID_UTILIZADOR”的“rota”行。
我该如何解决这个问题?
修改
我忘了说我不想使用“级联约束”,因为在某些情况下我应该执行“删除rota,其中ID_UTILIZADOR = 26”(如注释中所述)并避免删除子行如果它们存在。
答案 0 :(得分:3)
我先删除我的孩子收藏:
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
答案 1 :(得分:1)
将外键约束更改为CASCADE
好吧,从您给出的评论中可以清楚地看到级联删除是有条件的。
这意味着您需要编写确切的条件。在您的客户端或存储过程中。
或者仍然改为级联并再次添加触发器以防止删除(不确定在MySql中是否可以)
答案 2 :(得分:0)
查看cascade constraints
子句