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