-- KPI 原子表由显式 DDL 管理;一次性收敛删除标识类型,避免启动期 CodeFirst 反复重建大表。 -- 表尚未创建时跳过,后续 AidopTenantMigration 会按规范 DDL 创建。 SET @has_is_deleted := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ado_smart_ops_kpi_atomic_day' AND COLUMN_NAME = 'is_deleted' ); SET @sql := IF( @has_is_deleted = 1, 'UPDATE ado_smart_ops_kpi_atomic_day SET is_deleted = 0 WHERE is_deleted IS NULL', 'DO 0' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @needs_fix := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ado_smart_ops_kpi_atomic_day' AND COLUMN_NAME = 'is_deleted' AND ( DATA_TYPE <> 'tinyint' OR IS_NULLABLE <> 'NO' OR COALESCE(COLUMN_DEFAULT, '') <> '0' ) ); SET @sql := IF( @needs_fix = 1, 'ALTER TABLE ado_smart_ops_kpi_atomic_day MODIFY is_deleted TINYINT NOT NULL DEFAULT 0 COMMENT ''删除标识''', 'DO 0' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;