liyong
2026-07-02 784f2aa43bf07122474628cd8165e6d404fb42a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-- =====================================================
-- 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;