-- VIN码充电改造(account库):VIN 账户锁定金额 + 分配流水扩展(消费流水) -- 目的: -- 1) t_vin_management 新增 locked_amount:分配模式下 VIN 充电申请时锁定 VIN 余额 -- 2) t_company_allocate_record 新增 change_type / charging_order_code:区分「分配」与「消费」流水,并按订单号幂等 -- 创建日期: 2026-09-29 -- 目标库:charging_pile_account(可直接经 Mycat 8066 执行,非分片表) -- 幂等说明:ALTER 重复执行会报 Duplicate column / Duplicate key name,忽略即可(以小节 B 回查为准) -- 兼容说明:历史流水 change_type 默认 1(分配)、charging_order_code 为 NULL;唯一键 (charging_order_code, change_type) -- 在 MySQL 中允许多个 NULL 共存,历史数据不受影响 USE `charging_pile_account`; -- ============ 小节 A:VIN 管理表新增锁定金额 ============ ALTER TABLE `t_vin_management` ADD COLUMN `locked_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '锁定金额(VIN码充电申请时冻结,结算后释放)'; -- ============ 小节 B:分配记录表扩展(分配/消费区分 + 订单号幂等键) ============ ALTER TABLE `t_company_allocate_record` ADD COLUMN `change_type` tinyint NOT NULL DEFAULT '1' COMMENT '变更类型:1=分配(历史默认),2=消费(充电结算)'; ALTER TABLE `t_company_allocate_record` ADD COLUMN `charging_order_code` varchar(64) DEFAULT NULL COMMENT '充电订单号(消费流水写入,用于幂等与追溯)'; ALTER TABLE `t_company_allocate_record` ADD UNIQUE KEY `uk_order_change` (`charging_order_code`, `change_type`); ALTER TABLE `t_company_allocate_record` ADD KEY `idx_change_type` (`change_type`); -- ============ 小节 C:回查校验 ============ SELECT t.table_name, c.column_name, c.column_type, c.column_comment FROM information_schema.tables t JOIN information_schema.columns c ON c.table_schema = t.table_schema AND c.table_name = t.table_name WHERE t.table_schema = DATABASE() AND ( (t.table_name = 't_vin_management' AND c.column_name = 'locked_amount') OR (t.table_name = 't_company_allocate_record' AND c.column_name IN ('change_type', 'charging_order_code')) ); SELECT index_name, GROUP_CONCAT(column_name ORDER BY seq_in_index) AS columns_in_index FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = 't_company_allocate_record' AND index_name IN ('uk_order_change', 'idx_change_type') GROUP BY index_name;