You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

库存管理数据库:Table B插入后触发更新Table A对应LotNum的Quantity

库存扣减触发器实现方案

前提表结构定义

假设使用MySQL数据库,先创建两张核心业务表:

-- 库存表(对应需求中的Table A)
CREATE TABLE inventory (
    LotNum VARCHAR(20) PRIMARY KEY,
    Quantity INT NOT NULL CHECK (Quantity >= 0)
);

-- 扣减工单表(对应需求中的Table B)
CREATE TABLE deduction_workorder (
    id INT AUTO_INCREMENT PRIMARY KEY,
    LotNum VARCHAR(20) NOT NULL,
    Quantity INT NOT NULL CHECK (Quantity > 0),
    FOREIGN KEY (LotNum) REFERENCES inventory(LotNum)
);

创建AFTER INSERT触发器

当向工单表插入扣减记录时,自动更新库存表对应批次的剩余数量:

DELIMITER //
CREATE TRIGGER after_deduction_insert
AFTER INSERT ON deduction_workorder
FOR EACH ROW
BEGIN
    UPDATE inventory
    SET Quantity = Quantity - NEW.Quantity
    WHERE LotNum = NEW.LotNum;
END //
DELIMITER ;

测试验证流程

  1. 初始库存数据(Table A)
LotNumQuantity
125140
112530
  1. 插入扣减工单(Table B)
    执行插入语句:
INSERT INTO deduction_workorder (LotNum, Quantity) VALUES ('1251', 20);
  1. 触发器执行后库存数据(Table A)
LotNumQuantity
125120
112530

关键说明

  • 触发器通过NEW关键字获取刚插入的工单记录里的批次号和扣减数量
  • 给库存表Quantity字段加非负约束,可避免出现负库存情况
  • 工单表添加外键约束,能防止插入不存在的批次号

内容的提问来源于stack exchange,提问作者Tyler W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:05:00