如何在触发器中声明变量,因为MySQL在"where子句"中表示未知列"id_productos"



我是新手,我正在创建一个触发器,插入detail_providers时,更新表产品中的价格和存在字段,其中有detail_providers的id与product_product相同,但MySQL说detail_providers的column_products未知,有人可以帮助我吗?

这是触发器:

create trigger DetalleProductos 
after insert on detalle_proveedores for each row
UPDATE productos set precio_producto = new.costo_detalle_proveedor * 1.3,
existencia_producto= new.existencias_detalle_proveedores 
where id_productos=id_producto;

Error.
ERROR 1054: 1054: Unknown column 'id_productos' in 'where clause'
SQL Statement:
INSERT INTO `punto_de_venta`.`detalle_proveedores`
(`id_detalle_proveedores`, `id_proveedor`, 
`existencias_detalle_proveedores`, `costo_detalle_proveedor`, 
`fecha_detalle_proveedor`, `id_productos`, `nombre_producto`) VALUES 
('21', '15', '20', '170', '2017-09-09', '31', 'Cama')

您需要在where子句中引用NEW数据库:

where NEW.id_productos = id_producto

请参阅文档中的此示例

CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
delimiter |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW
BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
delimiter ;
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);

最新更新