MySQL触发器不';是否在后续查询中标识新实体?

MySQL触发器不';是否在后续查询中标识新实体?,mysql,triggers,Mysql,Triggers,我在“采购发票”表上设置了一个触发器,用于为“采购库存”表中的发票项目添加相应的库存交易,并更新“库存”表中的库存单位: CREATE TRIGGER addStock AFTER INSERT ON purchase_invoice FOR EACH ROW INSERT INTO purchase_stock ( purchase_invoice_id, item_id, units, ... )

我在“采购发票”表上设置了一个触发器,用于为“采购库存”表中的发票项目添加相应的库存交易,并更新“库存”表中的库存单位:

CREATE TRIGGER addStock AFTER INSERT ON purchase_invoice
FOR EACH ROW

    INSERT INTO 
    purchase_stock
    (
       purchase_invoice_id,
       item_id,
       units,
       ...
    )
    VALUES
    (
       NEW.id,
       NEW.item_id,
       NEW.units
       ...
    );

    UPDATE 
       stock 
    SET 
       units = units + NEW.units 
    WHERE 
       item_id = NEW.item_id;
...
但我得到以下错误:

Unknown column 'NEW.units'   in field list
Unknown column 'NEW.item_id' in 'where clause' 

对于每一行,在
之后没有
BEGIN
,因此mysql解释为触发器仅使用单个insert语句定义,并单独考虑update语句。这就是您收到错误消息的原因。显然,您也缺少相应的
END

正确的代码如下所示:

DELIMITER \\
CREATE TRIGGER addStock AFTER INSERT ON purchase_invoice
FOR EACH ROW
BEGIN
    INSERT INTO 
    purchase_stock
    (
       purchase_invoice_id,
       item_id,
       units,
       ...
    )
    VALUES
    (
       NEW.id,
       NEW.item_id,
       NEW.units
       ...
    );
    UPDATE 
       stock 
    SET 
       units = units + NEW.units 
    WHERE 
       item_id = NEW.item_id;
    ...
END\\

DELIMITER ;