-- ============================================================================ -- 1.0.555.verify.sql · R2-A2 执行后校验(返回单列 ok:1=全通过) -- -- V1 inbound_enabled = INT / NOT NULL / DEFAULT 0 -- V2 stale_guard_enabled = INT / NOT NULL / DEFAULT 1 -- V3 inbound_max_rows = INT / NOT NULL / DEFAULT 500(本批不改,只断言) -- V4 三列 NULL 计数 = 0 -- V5 mdp_entity 仍有行 -- V6 1.0.554 历史未被改动(status/verify/hash 原样) -- V7 P0 未被触碰(UK 列序 / CHECK / po_no·po_line NOT NULL) -- -- 注:类型断言为 INT 而非 TINYINT —— 本批刻意保持与实体声明一致, -- 否则 CodeFirst 会重写该列并连带抹掉 DEFAULT(1.0.554 已实证)。 -- INT vs 契约 TINYINT 的类型漂移留 R2-B。 -- 注:不比对 COLUMN_COMMENT,避免与 CodeFirst 的注释同步互踩。 -- ============================================================================ SELECT CASE WHEN -- V1 · inbound_enabled (SELECT COUNT(*) FROM information_schema.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity' AND `COLUMN_NAME` = 'inbound_enabled' AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '0') = 1 -- V2 · stale_guard_enabled AND (SELECT COUNT(*) FROM information_schema.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity' AND `COLUMN_NAME` = 'stale_guard_enabled' AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '1') = 1 -- V3 · inbound_max_rows(1.0.554 产物,本批只读断言) AND (SELECT COUNT(*) FROM information_schema.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity' AND `COLUMN_NAME` = 'inbound_max_rows' AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '500') = 1 -- V4 · 三列无 NULL AND (SELECT COUNT(*) FROM `mdp_entity` WHERE `inbound_enabled` IS NULL OR `inbound_max_rows` IS NULL OR `stale_guard_enabled` IS NULL) = 0 -- V5 · 表非空 AND (SELECT COUNT(*) FROM `mdp_entity`) > 0 -- V6 · 1.0.554 历史未被改动 AND (SELECT COUNT(*) FROM `sys_db_migration_log` WHERE `version` = '1.0.554' AND `status` = 'Success' AND `verify_status` = 'Success' AND UPPER(`file_hash`) = '04F0C650DCC5F8D36F7A5ACED5346C420BF967AA2493E7261FEA311E381EEB68') = 1 -- V7 · P0 未被触碰 AND (SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX` SEPARATOR ',') FROM information_schema.`STATISTICS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery' AND `INDEX_NAME` = 'uk_po_line_stat') = 'tenant_id,factory_id,stat_date,po_no,po_line' AND (SELECT COUNT(*) FROM information_schema.`TABLE_CONSTRAINTS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery' AND `CONSTRAINT_TYPE` = 'CHECK' AND `CONSTRAINT_NAME` = 'ck_dwd_process_outsource_valid_tenant') = 1 AND (SELECT COUNT(*) FROM information_schema.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery' AND `COLUMN_NAME` IN ('po_no', 'po_line') AND `IS_NULLABLE` = 'YES') = 0 THEN 1 ELSE 0 END AS ok;