Files
biz-api-cloud-zax/db/20261008_add_wallet_transaction_sys_remark.sql
T
2026-10-09 09:28:21 +08:00

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;