首页 > 解决方案 > 根据列值将行插入另一个表

问题描述

我有两张桌子(发货和库存)。

发货表(id、item_id、数量、expiry_date、状态)

库存表(id、shipping_id、item_id、数量、expiry_date)

status 可以是AcceptedReturned

我想创建一个触发器,仅将接受的货件插入到库存表中

这是我的代码,我不知道如何实现。

DELIMITER //
CREATE TRIGGER insert_stocks AFTER INSERT ON shipments
FOR EACH ROW
BEGIN
 IF shipments.status = 'Accepted' THEN
   INSERT INTO stocks (shipment_id, item_id, quantity, expiry_date)
   VALUES (NEW.shipments, NEW.item_id, NEW.quantity, NEW.expiry_date);
 END IF;
END //
DELIMITER ;

谢谢您的帮助。

标签: mysql

解决方案


您的想法是正确的,但是在检查新行的状态时,您应该使用NEW关键字,就像您在insert语句中所做的那样。

此外,货件 ID 应取自NEW.id,而不是NEW.shipments(不存在)。

IF NEW.status = 'Accepted' THEN
   INSERT INTO stocks (shipment_id, item_id, quantity, expiry_date)
   VALUES (NEW.id, NEW.item_id, NEW.quantity, NEW.expiry_date);
END IF;

推荐阅读