mysql - 根据列值将行插入另一个表
问题描述
我有两张桌子(发货和库存)。
发货表(id、item_id、数量、expiry_date、状态)
库存表(id、shipping_id、item_id、数量、expiry_date)
status 可以是Accepted或Returned。
我想创建一个触发器,仅将接受的货件插入到库存表中
这是我的代码,我不知道如何实现。
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 ;
谢谢您的帮助。
解决方案
您的想法是正确的,但是在检查新行的状态时,您应该使用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;
推荐阅读
- java - 感应 USB 连接,Android
- azure-active-directory - Azure AD 和 B2X 用户流中的外部标识
- python - 如何为不和谐的机器人制作一个可变的嵌入列表?
- reactjs - 如何设置 reactjs 选择选项的默认值并将其用作初始状态
- python - Celery:将作业执行错开几分钟的最佳方法是什么?
- java - 在Java中的arraylist中组合所有对象的布尔变量
- google-sheets - 谷歌表格 - 重复特定次数的功能
- linux - 从ansible运行的脚本返回多个“没有这样的文件或目录”,手动运行良好
- c - 边缘检测(Sobel算子)需要C帮助
- java - Junit5参数化测试中的重复参数