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

触发器引发Unknown column in 'field list'(errno1054)问题求助

问题解决方案

第一个触发器错误原因

子查询仅从Food表查询,未关联OrderItems表,因此无法识别OrderItems.quantity字段,这就是报错Unknown column in 'field list'的根源。

第二个触发器局限性

仅使用当前插入行的NEW.quantity和对应food_time计算,未累加当前订单下所有OrderItems的总和,因此只能计算单行数据的结果。

正确的触发器实现

要实现计算整个订单所有商品的总queue_time,需要关联OrderItems和Food表,汇总当前订单下所有条目的food_time * quantity总和:

BEGIN
    UPDATE Orders
    SET queue_time = COALESCE(
        (
            SELECT SUM(f.food_time * oi.quantity)
            FROM OrderItems oi
            INNER JOIN Food f ON oi.food_id = f.food_id
            WHERE oi.order_id = NEW.order_id
        ), 0
    )
    WHERE Orders.order_id = NEW.order_id;
END;

代码说明

  • 通过INNER JOIN关联OrderItems(别名oi)和Food(别名f),匹配商品ID;
  • 筛选条件oi.order_id = NEW.order_id确保只计算当前订单的所有商品;
  • 使用COALESCE函数处理订单无商品的情况,避免queue_time变为NULL,默认设为0;
  • 该触发器适用于INSERT/UPDATE/DELETE操作,只要订单的商品条目变化,都会重新计算总queue_time。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:57:06