Files
guoju0808/sql/migration_audit_status_0123_2026_08_16.sql
T
2026-08-16 13:42:26 +08:00

45 lines
2.0 KiB
SQL

-- ============================================================
-- 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;