Files
zfjia 8ffeb59dd4
IT-0 verify / verify (push) Canceled after 0s
第一阶段任务,相关数据库定义。
2026-11-10 14:52:54 +08:00

51 lines
2.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- 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 连通性探针表(非业务表)';