25 lines
1.8 KiB
SQL
25 lines
1.8 KiB
SQL
-- 20261008 wallet_transaction 新增 sys_remark 系统备注列(可重复执行)
|
|
-- 背景:流水缺少面向用户的场景简介,App/管理端只能展示固定的 title(如"支付")。
|
|
-- 新增 sys_remark 由服务端按场景模板自动生成(如"在食堂线下消费10元"、"在食堂线上预订消费10元"),
|
|
-- 与既有 remark(后台人工备注,update-remark 端点维护)职责分离、互不覆盖。
|
|
-- 方案:加一列可空 varchar(256),纯展示字段,不建索引、不回填默认值,读写路径零影响;
|
|
-- 历史数据由 wallet-biz 回填任务按主键游标分批 UPDATE(见 WalletSysRemarkBackfillService)。
|
|
-- ⚠️ 执行要求:必须在 wallet-biz 新包部署**之前**执行——新代码写入时 sys_remark 恒非空,
|
|
-- 列不存在会导致所有流水 insert 失败。可空加列为轻量在线 DDL,远低于 20261005 的 COPY 改列,
|
|
-- 仍建议低峰执行。
|
|
-- 回滚:ALTER TABLE wallet_transaction DROP COLUMN sys_remark(回滚前需先回退 wallet-biz 版本,
|
|
-- 否则新流水 insert 会因缺列失败)。
|
|
|
|
USE pjcloudx_wallet;
|
|
|
|
-- 加列:sys_remark(放在 remark 之后;OceanBase 不支持 ADD COLUMN IF NOT EXISTS,用 information_schema 判幂等)
|
|
SET @ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.columns
|
|
WHERE table_schema = 'pjcloudx_wallet' AND table_name = 'wallet_transaction'
|
|
AND column_name = 'sys_remark') = 0,
|
|
'ALTER TABLE wallet_transaction ADD COLUMN sys_remark varchar(256) DEFAULT NULL COMMENT ''系统备注:按场景模板自动生成的流水简介,与人工备注remark独立'' AFTER remark',
|
|
'SELECT ''skip: sys_remark 已存在'' AS msg');
|
|
PREPARE stmt FROM @ddl;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|