我有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 ;
答案 0 :(得分:1)
加入product
和link
,然后仅更新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 ;