MySQL 5.7 触发器可调用存储过程但禁止修改同一张表需用NEW/OLD显式传参AFTER INSERT中NEW.id可用且准确事务回滚时触发器及所调存储过程的DML自动回滚。触发器里不能直接调用存储过程错但有限制MySQL 5.7 允许在 BEFORE 和 AFTER 触发器中用 CALL 调用存储过程但有硬性约束不能在触发器里调用修改**同一张表**的存储过程会报 ERROR 1442。比如 orders 表的 INSERT 触发器里若存储过程内部又执行 INSERT INTO ordersMySQL 直接拒绝。实操建议把写操作拆到「下游表」——比如触发器调用 log_order_created()它只往 order_logs 插入记录不碰 orders用 INSERT ... SELECT 或临时表绕过限制但要小心事务可见性问题如果必须更新原表改用应用层异步处理别硬塞进触发器存储过程传参太弱用触发器变量补位触发器没有“参数”概念但能访问 NEW 和 OLD 伪记录。想把字段值传给存储过程得显式提取并作为参数传入不能直接传 NEW 整体。常见错误现象写 CALL update_cache(NEW) —— MySQL 报 ERROR 1318参数数量/类型不匹配。实操建议按需传具体字段CALL update_cache(NEW.order_id, NEW.status, NEW.updated_at)避免传大字段如 TEXT可能拖慢触发器执行甚至锁表如果字段多且固定可在存储过程中用默认值兜底减少触发器侧适配成本AFTER INSERT 触发器里读不到自增 ID要看时机在 AFTER INSERT 触发器里NEW.id 是可用的——前提是该列是 INT AUTO_INCREMENT 且未被显式赋值。但如果插入时指定了 id 值如 INSERT INTO t(id, name) VALUES (100, a)NEW.id 就是那个指定值不是生成的新 ID。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。