You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL触发器编译失败求助:删除pedido_itens后自动删除pedido

MySQL触发器编译错误修正方案

你的触发器代码存在三个关键问题,导致无法编译:

  • IF语法不符合MySQL规范:MySQL的IF条件块必须以THEN开头,原代码缺少这个关键字。
  • 伪记录引用错误:pedido_itens.old.ID_PEDIDO写法错误,触发器中的OLD是当前触发表(pedido_itens)的伪记录,直接写OLD.ID_PEDIDO即可。
  • 缺少完整触发器定义:你只提供了触发器的执行体,没有指定触发时机、触发表等核心定义,MySQL无法识别这是一个有效的触发器。

以下是完整的可编译代码,完全满足你的需求(删除pedido_itens中无剩余条目的对应pedido记录):

DELIMITER //
CREATE TRIGGER delete_empty_pedido
AFTER DELETE ON pedido_itens
FOR EACH ROW
BEGIN
    IF NOT EXISTS (SELECT * FROM pedido_itens WHERE ID_PEDIDO = OLD.ID_PEDIDO) THEN
        DELETE FROM pedido WHERE ID = OLD.ID_PEDIDO;
    END IF;
END //
DELIMITER ;

代码说明:

  • DELIMITER //:临时修改SQL语句分隔符为//,避免触发器内部的分号被MySQL误判为语句结束。
  • AFTER DELETE ON pedido_itens:指定触发器在pedido_itens表执行DELETE操作后触发。
  • FOR EACH ROW:每删除一条pedido_itens记录,就执行一次剩余条目检查。
  • 修正后的IF语句添加了THEN关键字,符合MySQL语法规范;DELETE语句直接通过OLD.ID_PEDIDO关联pedido表的主键,实现精准删除。

内容的提问来源于stack exchange,提问作者Jean Guanabara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:43:12