-- ============================================================================= -- IT-0 / DV-0 分域增量 DDL —— 公共部分(幂等辅助 + 连通性探针表) -- 目标库:apt_rev01 @ 127.0.0.1:3306 / MySQL 9.5 -- 设计口径:CR-02 表 3-25(59 张)、表 3-33(PK/UK/IDX/迁移顺序)、 -- 公寓端/03 表 3-8~3-15、公寓端/13 表 13-10 验收③(二次执行幂等) -- 通用规则: -- 1) InnoDB / utf8mb4 / utf8mb4_0900_ai_ci -- 2) 代理主键 id bigint AUTO_INCREMENT;业务幂等键一律 UK 且以 gyid 打头 -- 3) 不建外键(docs/10 表 5-6:跨端/分库场景用应用层约束 + 对账兜底) -- 4) 状态用 varchar 大写下划线枚举 + CHECK,不用 MySQL ENUM、不用数字码 -- 5) 金额 decimal(12,2)、比率 decimal(6,4)、时间 datetime(3)、禁止浮点 -- 6) deleted tinyint NOT NULL DEFAULT 0;create_time/update_time 审计列 -- 7) 所有 CREATE TABLE 带 IF NOT EXISTS,可重复执行 -- ============================================================================= SET NAMES utf8mb4; SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'; -- 幂等补列存储过程:供 07_patch_columns.sql 与后续迭代增量迁移使用 DROP PROCEDURE IF EXISTS apt_add_column_if_missing; DELIMITER $$ CREATE PROCEDURE apt_add_column_if_missing( IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_ddl TEXT) BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table AND COLUMN_NAME = p_column ) THEN SET @apt_ddl = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN ', p_ddl); PREPARE apt_stmt FROM @apt_ddl; EXECUTE apt_stmt; DEALLOCATE PREPARE apt_stmt; END IF; END$$ DELIMITER ; -- 连通性探针专用表(不计入 59 张业务表):只做 INSERT/SELECT/DELETE 闭环验证 CREATE TABLE IF NOT EXISTS apt_ops_probe ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '代理主键', gyid VARCHAR(32) NOT NULL COMMENT '公寓隔离标识', probe_key VARCHAR(64) NOT NULL COMMENT '探针幂等键', payload VARCHAR(256) NULL COMMENT '探针载荷', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '写入时刻', PRIMARY KEY (id), UNIQUE KEY uk_probe_gyid_key (gyid, probe_key), KEY idx_probe_gyid_time (gyid, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='IT-0 连通性探针表(非业务表)';