我在桌面上设置了触发器" purchase_invoice'这应该为" purchase_stock'中的发票项目添加相应的股票交易。在' stock'中更新其库存单位并进行更新。表:
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'
答案 0 :(得分:0)
BEGIN
之后没有FOR EACH ROW
,因此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 ;