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 ;