插入时触发,更新其他表但只有一行

时间:2017-02-05 08:42:09

标签: mysql

我有3张桌子

表产品(PK id_product,qty_stock) - 我有几个产品

表链接(PK FK id_product,PK FK id_order) - 指向其他2个表的外键

表顺序(PK id_order,qty_bought)

问题
在创建订单行时减去qty_stock的qty_bought的触发器,问题是FOR EACH ROW减去所有产品行,我无法找到告诉哪个产品的方法,因为订单表没有id_product引用。有解决方案还是我需要更改表格? THX。

DROP TRIGGER IF EXISTS OnInsertStock;
DELIMITER //
CREATE TRIGGER OnInsertStock
  AFTER INSERT ON order FOR EACH ROW
  BEGIN
    UPDATE product           
    SET qty_stock = qty_stock - new.qty_bought
  END //
DELIMITER ;

1 个答案:

答案 0 :(得分:1)

您需要Multi Table Update

加入productlink,然后仅更新product中的字段。

DROP TRIGGER IF EXISTS OnInsertStock;
DELIMITER //
CREATE TRIGGER OnInsertStock
  AFTER INSERT ON order FOR EACH ROW
  BEGIN
    UPDATE product, link
       SET product.qty_stock = product.qty_stock - new.qty_bought
     WHERE product.id_product = link.id_product
       AND link.id_order = new.id_order
  END //
DELIMITER ;