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

MySQL触发器报错1054:OLD中不存在'anterior_código'列的问题

解决MySQL触发器错误:Error Code: 1054. Unknown column 'anterior_código' in 'OLD'

错误原因

触发器代码里的OLD.anterior_código、NEW.nuevo_código写法完全错误。OLD和NEW是触发器中引用**原表inventario**数据的关键字,原表的字段是código、producto、precio、cantidad,根本不带anterior_或nuevo_前缀——这些前缀是备份表inventario_respaldo的列名,不能直接套在OLD/NEW的字段引用上。

修正后的完整代码

CREATE TABLE inventario (
    código VARCHAR(4) PRIMARY KEY,
    producto VARCHAR(10) UNIQUE NOT NULL,
    precio INT NOT NULL,
    cantidad INT UNSIGNED NOT NULL
);

CREATE TABLE inventario_respaldo (
    anterior_código VARCHAR(4),
    anterior_producto VARCHAR(10) UNIQUE NOT NULL,
    anterior_precio INT NOT NULL,
    anterior_cantidad INT UNSIGNED NOT NULL,
    nuevo_código VARCHAR(4),
    nuevo_producto VARCHAR(10) UNIQUE NOT NULL,
    nuevo_precio INT NOT NULL,
    nuevo_cantidad INT UNSIGNED NOT NULL,
    usuario VARCHAR(20),
    fecha DATETIME
);

INSERT INTO inventario VALUES ('AT01', 'Bicicleta', 200, 20), ('AT02', 'Microondas', 100, 10), ('AT03', 'Lavamanos', 150, 5);

-- 先创建触发器,再执行UPDATE才会触发备份逻辑
DELIMITER //

CREATE TRIGGER trigger_respaldo 
BEFORE UPDATE   
ON inventario FOR EACH ROW  
BEGIN   
    INSERT INTO inventario_respaldo (
        anterior_código, anterior_producto, anterior_precio, anterior_cantidad,
        nuevo_código, nuevo_producto, nuevo_precio, nuevo_cantidad,
        usuario, fecha
    )
    VALUES (
        OLD.código, OLD.producto, OLD.precio, OLD.cantidad,
        NEW.código, NEW.producto, NEW.precio, NEW.cantidad,
        CURRENT_USER(), NOW()
    ); 
END //  

DELIMITER ;

-- 现在执行UPDATE会触发触发器写入备份记录
UPDATE inventario SET cantidad = 90 WHERE código = 'AT02';

额外说明

  • OLD存储的是UPDATE操作前原表的旧数据,对应备份表的anterior_*列;NEW存储的是UPDATE操作后将要写入的新数据,对应备份表的nuevo_*列。
  • 原代码中UPDATE语句写在触发器创建之前,这部分UPDATE不会触发备份逻辑,修正后调整了顺序,确保触发器生效后再执行数据修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:05:29