-- ============================================================ -- Migration: biz_expert.audit_status 0/1/2/中文 → 0/1/2/3 (语义扩展) -- Date: 2026-08-16 -- Author: Claude -- 影响范围: biz_expert 表的 audit_status 字段 -- 旧语义: '0' = 待审核, '1' = 通过, '2' = 退回 (还有中文脏数据: '审核通过'/'待审核'/'已退回'/'已驳回') -- 新语义: '0' = 未提交, '1' = 待审核, '2' = 通过, '3' = 拒绝 -- 注意: status 字段已改成 Y/N (见 migration_status_YN_2026_08_16.sql) -- ============================================================ -- 0. 备份 (必须做, 用于回滚) CREATE TABLE biz_expert_audit_status_bak_20260816 AS SELECT expert_id, name, audit_status FROM biz_expert; -- 1. 单条 CASE UPDATE, 一次搞定 (避免 cascading: '0'→'1' 后被 '1'→'2' 误改) UPDATE biz_expert SET audit_status = CASE audit_status WHEN '0' THEN '1' -- 待审核 (旧) → 待审核 (新) WHEN '1' THEN '2' -- 通过 (旧) → 通过 (新) WHEN '2' THEN '3' -- 退回 (旧) → 拒绝 (新) WHEN '审核通过' THEN '2' WHEN '待审核' THEN '1' WHEN '已退回' THEN '3' WHEN '已驳回' THEN '3' ELSE audit_status -- 未识别的值不动, 人工排查 END WHERE audit_status IN ('0','1','2','审核通过','待审核','已退回','已驳回'); -- 2. ALTER 默认值 + comment ALTER TABLE biz_expert MODIFY COLUMN audit_status VARCHAR(20) DEFAULT '1' COMMENT '审核状态 0未提交 1待审核 2通过 3拒绝'; -- 3. 验证 (执行后应全部为 1/2/3) -- SELECT audit_status, COUNT(*) FROM biz_expert GROUP BY audit_status ORDER BY audit_status; -- 预期结果 (取决于生产数据): -- 1 | 待审核 -- 2 | 通过 -- 3 | 拒绝 -- 4. 若有数据未转换 (上面 ELSE 分支), 用 SELECT 排查: -- SELECT expert_id, name, audit_status FROM biz_expert -- WHERE audit_status NOT IN ('0','1','2','3') OR audit_status IS NULL; -- 5. 确认无误后, 可删除备份表: -- DROP TABLE biz_expert_audit_status_bak_20260816;