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