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

创建MySQL触发器:插入Scanned表后同步Inventory表的Machine_type

自动同步Scanned表的Machine_type字段(基于Inventory表匹配)

最实用的方案是用数据库触发器实现自动同步,也可以在插入时直接关联查询完成操作,以下是具体实现:

方案1:数据库触发器(自动触发,无需额外代码)

触发器会在Scanned表插入数据后立即执行匹配更新,适合需要自动同步的场景。

MySQL 代码示例

DELIMITER //
CREATE TRIGGER update_scanned_machine_type AFTER INSERT ON Scanned
FOR EACH ROW
BEGIN
    -- 通过Barcode关联Inventory,更新刚插入的Scanned行的Machine_type
    UPDATE Scanned s
    JOIN Inventory i ON s.Barcode = i.Barcode
    SET s.Machine_type = i.Machine_type
    WHERE s.ID = NEW.ID;
END //
DELIMITER ;

SQL Server 代码示例

CREATE TRIGGER update_scanned_machine_type ON Scanned
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE s
    SET s.Machine_type = i.Machine_type
    FROM Scanned s
    INNER JOIN Inventory i ON s.Barcode = i.Barcode
    INNER JOIN inserted ins ON s.ID = ins.ID;
END;

方案2:插入时直接关联查询(手动触发)

如果不需要自动同步,也可以在插入Scanned数据时直接从Inventory获取对应的Machine_type,一步完成插入:

单条插入示例

INSERT INTO Scanned (Barcode, Machine_type)
SELECT '目标条码', i.Machine_type
FROM Inventory i
WHERE i.Barcode = '目标条码';

批量插入示例

INSERT INTO Scanned (Barcode, Machine_type)
SELECT temp.Barcode, i.Machine_type
FROM (
    SELECT '条码1' AS Barcode UNION ALL
    SELECT '条码2' AS Barcode UNION ALL
    SELECT '条码3' AS Barcode
) temp
LEFT JOIN Inventory i ON temp.Barcode = i.Barcode;

注意事项

  • 给Inventory表的Barcode字段添加索引,避免数据量大时匹配效率低下
  • 如果Inventory中无匹配的Barcode,Scanned的Machine_type会被设为NULL,可根据需求添加默认值处理
  • 触发器会轻微影响插入性能,高并发场景建议先评估再使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:23