add_balance_merged.sql 1.4 KB

123456789101112131415161718192021222324252627282930
  1. -- =============================================================================
  2. -- debtAmount 并入 balance — 加字段 balanceMerged(在线 DDL,尽量避免锁表)
  3. -- =============================================================================
  4. -- 执行前确认列不存在(已存在则跳过该表):
  5. -- SELECT TABLE_NAME, COLUMN_NAME FROM information_schema.COLUMNS
  6. -- WHERE TABLE_SCHEMA = DATABASE()
  7. -- AND TABLE_NAME IN ('xhGhsCustom', 'xhGhs')
  8. -- AND COLUMN_NAME = 'balanceMerged';
  9. --
  10. -- 少锁表做法:
  11. -- · 列加在表末尾(不写 AFTER debtAmount),避免为「插中间列」触发拷表
  12. -- · NOT NULL DEFAULT 0,无需 UPDATE 回填
  13. -- · ALGORITHM=INPLACE, LOCK=NONE:允许并发 DML(MySQL 5.7+/8.0 常见)
  14. -- · 8.0 若支持 INSTANT,可把 INPLACE 换成 INSTANT(变更更快、锁更短)
  15. -- · 极大表或仍阻塞时,用 pt-online-schema-change / gh-ost 加同名列
  16. --
  17. -- 业务合并:bizGhs\custom\classes\AccountMoneyClass
  18. -- =============================================================================
  19. SET SESSION lock_wait_timeout = 10;
  20. ALTER TABLE `xhGhsCustom`
  21. ADD COLUMN `balanceMerged` tinyint(1) NOT NULL DEFAULT 0 COMMENT '挂账已并入余额:0否1是',
  22. ALGORITHM = INPLACE,
  23. LOCK = NONE;
  24. ALTER TABLE `xhGhs`
  25. ADD COLUMN `balanceMerged` tinyint(1) NOT NULL DEFAULT 0 COMMENT '挂账已并入余额:0否1是',
  26. ALGORITHM = INPLACE,
  27. LOCK = NONE;