【问题标题】:MY SQL Trigger balance errorMYSQL触发余额错误
【发布时间】:2012-01-02 09:13:05
【问题描述】:

我有 4 个表,分别调用 addproduct、sellproduct、reportfoundproduct、productbalance

在向这三个表(addproduct、sellproduct、reportfoundproduct)插入数据后,我想触发更新productbalance表中库存的余额数量

下面是我在 sellproduct 表中的触发器:

CREATE
DEFINER=`root`@`localhost`
TRIGGER `user`.`bad1`
AFTER INSERT ON `user`.`sellproduct`
FOR EACH ROW
BEGIN

UPDATE productbalance 
SET Quantity_OnHand =(Quantity_OnHand- (select (sell_Quantity) from (select * from sellproduct) as temp3)) 
WHERE Product_ID= productbalance.Product_ID ; 

 END$$

它的意思是数量平衡=添加产品-销售产品

但是当触发器执行时,它会改变我的整行数据 - 销售产品...

如果我只想更改价值改变的产品ID,如何解决?

请帮忙...谢谢

【问题讨论】:

    标签: mysql triggers balance


    【解决方案1】:

    您需要使用 NEW psuedo 表,因此您只使用新行中的信息

    CREATE DEFINER=`root`@`localhost` TRIGGER `user`.`bad1`
    AFTER INSERT ON `user`.`sellproduct` FOR EACH ROW
    BEGIN
    
    UPDATE productbalance 
    SET Quantity_OnHand = Quantity_OnHand - NEW.sell_Quantity
    WHERE Product_ID = NEW.Product_ID ; 
    
    END$$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-28
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多