我需要更新库存,每当我们购买产品时,都需要将该数量添加到我的库存中。
我正在通过 mysql 进行此更新,我有两个表“ detalledecompra
”用于购买产品,而“ productos
”则是库存,其中包含产品ID ,说明,数量等。
我考虑过要创建此触发器:
CREATE TRIGGER UPDATESTOCK AFTER INSERT ON detalledecompra
FOR EACH ROW
BEGIN
UPDATE productos
SET productos.StockActual = StockActual + detalledecompra.Cantidad
WHERE productos.CodigoProducto = detalledecompra.CodigoProducto;
END;
但是我的视觉工作室说,它找不到列detalledecompra.Cantidad
MySql.Data.MySqlClient.MySqlException:中的“未知列'Cantidad” “字段列表”
我应该如何修改触发器,以便每当我们购买商品时,都会将该数量添加到“ StockActual”产品中?
答案 0 :(得分:3)
出现该错误的原因是因为您没有加入UPDATE
查询中的detalledecompra表。也就是说,在这种情况下,您无需使用该表。
在INSERT
上创建触发器时,触发器可以访问NEW
关键字,该关键字可以访问要插入的值。因此,您实际上不需要直接在触发函数中访问detalledecompra。
这应该对您有用:
UPDATE productos
SET productos.StockActual = StockActual + NEW.Cantidad
WHERE productos.CodigoProducto = NEW.CodigoProducto;
以下是有关MySQL触发器以及NEW
和OLD
关键字的一些文档:MySQL Docs