我需要在购买产品时更新我的股票,需要将其添加到我的股票中。我正在通过 mySQL 进行此更新,我有两个表" detalledecompra
",我们在其中购买产品和" productos
",它将是库存,其中包含产品ID,Description,Wentity Avaliable等。我考虑过创建这个触发器:
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'in "现场列表"'
我应该如何修改扳机,以便每当我们购买东西时,该数量都会添加到"股票"?
您遇到该错误的原因是因为您没有加入UPDATE
查询中的detalledecompra表。也就是说,在这种情况下,您不需要使用该表。
在INSERT
上创建触发器时,您的触发器可以访问NEW
关键字,该关键字可访问要插入的值。因此,您实际上不需要直接在触发函数中访问detalledecompra。
这应该对您有用:
UPDATE productos
SET productos.StockActual = StockActual + NEW.Cantidad
WHERE productos.CodigoProducto = NEW.CodigoProducto;
这是MySQL触发器和NEW
和OLD
关键字的一些文档:mysql docs