puzhibing
4 天以前 a0e03b646f2c444b0f09687d24e9995112b99017
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
51
-- =============================================================================
-- 2026-09-30 公司充值记录表新增字段:serial_no(充值流水号)、status(充值状态)
-- -----------------------------------------------------------------------------
-- 前置说明:
--   1) Mycat 2.0 代理可广播 DDL,无需逐分表执行;ALTER 拆分为单条语句便于重复执行排错
--   2) status 历史回填为 1(成功);serial_no 历史回填为 CR + id 左补 0(10 位)
--   3) 新增唯一索引 uk_serial_no + 普通索引 idx_status
--   4) 状态枚举:1=成功 2=失败 3=已退款
-- =============================================================================
SET NAMES utf8mb4;
 
USE charging_pile_other;
 
-- -----------------------------------------------------------------------------
-- 小节 A: DDL
-- -----------------------------------------------------------------------------
ALTER TABLE t_company_recharge_record
    ADD COLUMN serial_no VARCHAR(32) DEFAULT NULL COMMENT '充值流水号' AFTER id;
 
ALTER TABLE t_company_recharge_record
    ADD COLUMN status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '充值状态 1=成功 2=失败 3=已退款' AFTER arrival_amount;
 
ALTER TABLE t_company_recharge_record
    ADD UNIQUE KEY uk_serial_no (serial_no);
 
ALTER TABLE t_company_recharge_record
    ADD KEY idx_status (status);
 
-- -----------------------------------------------------------------------------
-- 小节 B: 历史数据回填
-- -----------------------------------------------------------------------------
UPDATE t_company_recharge_record
SET serial_no = CONCAT('CR', LPAD(id, 10, '0'))
WHERE serial_no IS NULL OR serial_no = '';
 
-- -----------------------------------------------------------------------------
-- 小节 C: 回查
--   C1. 列存在 + 注释
--     SELECT column_name, column_type, is_nullable, column_default, column_comment
--     FROM information_schema.columns
--     WHERE table_schema = 'charging_pile_other' AND table_name = 't_company_recharge_record'
--       AND column_name IN ('serial_no','status');
--   C2. 索引存在
--     SELECT index_name, non_unique, column_name
--     FROM information_schema.statistics
--     WHERE table_schema = 'charging_pile_other' AND table_name = 't_company_recharge_record';
--   C3. 历史回填全填(含 NULL 不允许)
--     SELECT COUNT(*) AS empty_serial FROM charging_pile_other.t_company_recharge_record
--     WHERE serial_no IS NULL OR serial_no = '';
--     期望:empty_serial=0
-- =============================================================================