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

触发器创建成功但插入数据时报#1109错误:未知表'master_benang'

问题解决方法

问题根源

触发器的IF条件中直接引用master_benang表的字段,但未通过合法查询语句获取数据,MySQL无法识别这种无上下文的表字段引用,因此抛出"Unknown table 'master_benang' in field list"错误。同时原代码中使用的&&虽可作为逻辑与,但MySQL更规范的写法是AND,建议统一替换。

修正后的触发器代码

BEGIN
    DECLARE record_exists INT DEFAULT 0;
    -- 先查询是否存在匹配的记录
    SELECT COUNT(*) INTO record_exists
    FROM master_benang
    WHERE jenis_benang = NEW.jenis_benang AND LOT = NEW.LOT;
    
    IF record_exists > 0 THEN
        UPDATE master_benang 
        SET BOX_KRG = BOX_KRG + NEW.BOX_KRG,
            KG = KG + NEW.KG,
            BALE = BALE + NEW.BALE
        WHERE jenis_benang = NEW.jenis_benang AND LOT = NEW.LOT;
    ELSE
        INSERT INTO master_benang (id_supplier, jenis_benang, tipe_benang, LOT, BOX_KRG, KG, BALE, keterangan)
        VALUES(NEW.id_supplier, NEW.jenis_benang, NEW.tipe_benang, NEW.LOT, NEW.BOX_KRG, NEW.KG, NEW.BALE, NEW.keterangan);
    END IF;
END

关键说明

通过SELECT ... INTO语句先判断master_benang中是否存在匹配的记录,再执行更新或插入操作,这是MySQL触发器中处理此类"存在则更新,不存在则插入"逻辑的标准方式,能避免无上下文的表字段引用错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:05:14