-- ===================================================== -- MDM 主数据迁移 - 补充:添加缺失的字段 -- 执行顺序:在 mdm_migration_02_item_data.sql 之后执行 -- ===================================================== -- ===================================================== -- 01. 检查并添加 mes_wm_material_stock 表的 item_type_id 字段 -- ===================================================== -- 添加 item_type_id 字段(如果不存在) -- MySQL 不支持 IF NOT EXISTS 用于 ADD COLUMN,使用存储过程或直接执行 -- 先尝试添加,如果已存在会报错,可以忽略 -- 方式1:直接添加(如果字段已存在会报错,忽略即可) ALTER TABLE mes_wm_material_stock ADD COLUMN item_type_id bigint DEFAULT NULL COMMENT '物料分类编号' AFTER id; -- 方式2:如果方式1报错说字段已存在,说明字段已经存在,跳过即可 -- ===================================================== -- 02. 为 item_type_id 创建索引(可选) -- ===================================================== -- 创建索引(如果不存在) -- CREATE INDEX idx_item_type_id ON mes_wm_material_stock(item_type_id); -- ===================================================== -- 03. 更新库存表中的 item_type_id -- 根据 item_id 关联 mes_md_item 表获取 item_type_id -- ===================================================== -- 从物料表获取分类ID并更新到库存表 UPDATE mes_wm_material_stock s INNER JOIN mes_md_item i ON s.item_id = i.id SET s.item_type_id = i.item_type_id + 10000 -- MDM分类ID偏移10000 WHERE s.item_type_id IS NULL AND s.deleted = 0; -- ===================================================== -- 04. 验证结果 -- ===================================================== -- 查看库存表字段 SELECT * FROM mes_wm_material_stock LIMIT 5; -- 验证 item_type_id 是否更新 SELECT COUNT(*) AS updated_count FROM mes_wm_material_stock WHERE item_type_id IS NOT NULL AND item_type_id >= 10000 AND deleted = 0;