我正在尝试更新导致触发器的表中的值。我知道错误的原因,但我需要解决方法。如果表中的 new.id = id 已经存在,我需要更新产品数量的旧值。我无法在触发器和存储的函数中更新它。我花了几个小时思考解决方案,我该怎么做?
DROP TRIGGER IF EXISTS insert_product_trigger;
delimiter //
CREATE TRIGGER insert_product_trigger
BEFORE INSERT ON product
FOR EACH ROW
BEGIN
IF exists(select id_product from product where id_product = new.id_product) THEN
update product set quantity = quantity + new.quantity where id_product = new.id_product;
END IF;
END; //
delimiter ;
如果产品存在,我需要更新数量的旧值(只需将插入中的新数量添加到旧数量中)并取消插入或如果不存在则插入。
第 3 行的错误 1442 (HY000):无法更新存储函数/触发器中的表“产品”,因为它已被调用此存储函数/触发器的语句使用。