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

如何在新增Table B采购记录时同步更新Table A库存数据?

自动同步库存与采购记录的实现方案

假设表结构

  • Table A(库存商品记录表):包含 item_id(商品唯一标识,主键)、item_quantity(当前库存数量)字段
  • Table B(采购记录表):包含 purchase_id(采购单唯一标识,主键)、item_id(关联商品ID)、item_quantity(采购数量)字段

核心实现:数据库触发器

通过数据库的AFTER INSERT触发器,在采购记录插入Table B后,自动更新Table A的对应库存。以下是主流数据库的具体实现:


1. MySQL 版本

创建触发器,插入采购记录后自动扣减库存:

DELIMITER //
CREATE TRIGGER update_stock_after_purchase
AFTER INSERT ON Table B
FOR EACH ROW
BEGIN
    UPDATE Table A
    SET item_quantity = item_quantity - NEW.item_quantity
    WHERE item_id = NEW.item_id;
END //
DELIMITER ;
  • NEW.item_id/NEW.item_quantity:指代刚插入的采购记录中的商品ID和采购数量
  • 触发器会自动匹配Table A中对应商品,完成库存扣减

2. PostgreSQL 版本

PostgreSQL需要先定义触发函数,再绑定触发器:

第一步:创建触发函数
CREATE OR REPLACE FUNCTION update_stock()
RETURNS TRIGGER AS $$
BEGIN
    UPDATE Table A
    SET item_quantity = item_quantity - NEW.item_quantity
    WHERE item_id = NEW.item_id;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;
第二步:绑定触发器
CREATE TRIGGER update_stock_after_purchase
AFTER INSERT ON Table B
FOR EACH ROW
EXECUTE FUNCTION update_stock();

关键注意事项

  • 给Table B的item_id添加外键约束,关联Table A的item_id,避免插入不存在的商品ID导致无效更新
  • 若需支持采购记录修改/取消(比如调整采购数量、删除采购单),可额外创建AFTER UPDATE/AFTER DELETE触发器,反向调整库存(比如更新时用NEW.item_quantity - OLD.item_quantity计算差值,删除时加回库存)
  • 高并发场景下,建议在库存更新语句中添加行级锁(如MySQL的UPDATE ... WHERE ... FOR UPDATE),防止出现库存超卖的并发问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:31:16