Files
jcgl-dev/dev/sql/apt_rev01/99_verify.sql
T

64 lines
2.9 KiB
SQL
Raw Normal View History

-- =============================================================================
-- IT-0 验收校验脚本(表 13-10 验收③ / MS-0)
-- 预期:business_table_count = 59;missing_pk = 0;missing_gyid = 0
-- 口径:apt_* 36 + gy_*/gygl_* 18 + duty_* 5 = 59(CR-02 表 3-25、公寓端/03 表 3-8)
-- apt_ops_probe 为连通性探针表,显式排除,不计入 59 张。
-- =============================================================================
SELECT '=== 1. 业务表总数(应为 59)===' AS section;
SELECT COUNT(*) AS business_table_count
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_TYPE = 'BASE TABLE'
AND (TABLE_NAME LIKE 'apt\_%' OR TABLE_NAME LIKE 'gy\_%'
OR TABLE_NAME LIKE 'gygl\_%' OR TABLE_NAME LIKE 'duty\_%')
AND TABLE_NAME <> 'apt_ops_probe';
SELECT '=== 2. 分前缀分布(应为 apt 36 / gy 17 / gygl 1 / duty 5)===' AS section;
SELECT CASE
WHEN TABLE_NAME LIKE 'apt\_%' THEN 'apt'
WHEN TABLE_NAME LIKE 'gygl\_%' THEN 'gygl'
WHEN TABLE_NAME LIKE 'gy\_%' THEN 'gy'
ELSE 'duty'
END AS prefix, COUNT(*) AS cnt
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND (TABLE_NAME LIKE 'apt\_%' OR TABLE_NAME LIKE 'gy\_%'
OR TABLE_NAME LIKE 'gygl\_%' OR TABLE_NAME LIKE 'duty\_%')
AND TABLE_NAME <> 'apt_ops_probe'
GROUP BY prefix ORDER BY prefix;
SELECT '=== 3. 缺主键的业务表(应为 0 行)===' AS section;
SELECT t.TABLE_NAME
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = DATABASE()
AND (t.TABLE_NAME LIKE 'apt\_%' OR t.TABLE_NAME LIKE 'gy\_%'
OR t.TABLE_NAME LIKE 'gygl\_%' OR t.TABLE_NAME LIKE 'duty\_%')
AND t.TABLE_NAME <> 'apt_ops_probe'
AND NOT EXISTS (
SELECT 1 FROM information_schema.TABLE_CONSTRAINTS c
WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
AND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
);
SELECT '=== 4. 缺 gyid 列的业务表(应为 0 行)===' AS section;
SELECT t.TABLE_NAME
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = DATABASE()
AND (t.TABLE_NAME LIKE 'apt\_%' OR t.TABLE_NAME LIKE 'gy\_%'
OR t.TABLE_NAME LIKE 'gygl\_%' OR t.TABLE_NAME LIKE 'duty\_%')
AND t.TABLE_NAME <> 'apt_ops_probe'
AND NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS c
WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
AND c.COLUMN_NAME = 'gyid'
);
SELECT '=== 5. 外键数量(应为 0:docs/10 表 5-6 明确不建外键)===' AS section;
SELECT COUNT(*) AS foreign_key_count
FROM information_schema.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = DATABASE() AND CONSTRAINT_TYPE = 'FOREIGN KEY';
SELECT '=== 6. 探针表与基线种子 ===' AS section;
SELECT (SELECT COUNT(*) FROM apt_ops_probe) AS probe_rows,
(SELECT COUNT(*) FROM apt_master_version WHERE source = 'LOCAL') AS local_baseline_rows,
(SELECT COUNT(*) FROM apt_ops_selfcheck) AS selfcheck_item_rows;