51 lines
2.6 KiB
SQL
51 lines
2.6 KiB
SQL
-- =============================================================================
|
||
-- 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 连通性探针表(非业务表)';
|