我试图让这个触发器工作:
delimiter //
CREATE TRIGGER inv_update AFTER UPDATE ON products FOR EACH ROW
BEGIN
UPDATE inventory
SET ea_qty = CASE
WHEN id = ea_id THEN
NEW.quantity,
box_qty = CASE
WHEN id = box_id THEN
NEW.quantity
END ;
END//
delimiter ;
我也尝试了以下内容:
delimiter //
CREATE TRIGGER inv_update AFTER UPDATE ON products AS p FOR EACH ROW
BEGIN
IF p.id = ea_id THEN
UPDATE inventory
SET ea_qty = NEW.p.quantity
END IF ;
IF p.id = box_id THEN
UPDATE inventory
SET box_qty = NEW.p.quantity
END IF ;
END ;//
delimiter ;
更新
我想要实现的目标是对于products表中的每次更新,都应更新清单表中相同产品的相应ID,以使库存和产品表保持同步。例如销售发生后,受影响的产品将减少sales_item数量,因此除非库存表也更新,否则库存表中的数量将与该效果销售相对应。同时,并非所有产品在库存表中都有box_id。 ea_id和box_id之间的关系是两个表中的Parent to Child,但两者都是可以进行销售的单独ID。
我真的很希望能够得到足够的帮助。
答案 0 :(得分:0)
我认为这只是你的指南,我不知道你的桌子结构,我只是想象你的意思..
delimiter // CREATE TRIGGER inv_update AFTER UPDATE ON products_table FOR EACH ROW BEGIN declare ea_idvar int(20) default 0; declate box_idvar int(20) default 0; select ea_id,box_id INTO @ea_idvar,@box_idvar from products_table where product_id = old.product_id; if LENGTH(@ea_idvar)>0 THEN update inventory_table set ea_qty = new.ea_qty where product_id = new.product_id; elseif LENGTH(@box_idvar)>0 THEN update inventory_table set box_qty = new.box_qty where product_id = new.product_id; end if; END ;// delimiter ;
如果旧的不工作,那就改成新的..好运 希望它有所帮助。