1.0.600.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. -- KPI 原子表由显式 DDL 管理;一次性收敛删除标识类型,避免启动期 CodeFirst 反复重建大表。
  2. -- 表尚未创建时跳过,后续 AidopTenantMigration 会按规范 DDL 创建。
  3. SET @has_is_deleted := (
  4. SELECT COUNT(*)
  5. FROM information_schema.COLUMNS
  6. WHERE TABLE_SCHEMA = DATABASE()
  7. AND TABLE_NAME = 'ado_smart_ops_kpi_atomic_day'
  8. AND COLUMN_NAME = 'is_deleted'
  9. );
  10. SET @sql := IF(
  11. @has_is_deleted = 1,
  12. 'UPDATE ado_smart_ops_kpi_atomic_day SET is_deleted = 0 WHERE is_deleted IS NULL',
  13. 'DO 0'
  14. );
  15. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  16. SET @needs_fix := (
  17. SELECT COUNT(*)
  18. FROM information_schema.COLUMNS
  19. WHERE TABLE_SCHEMA = DATABASE()
  20. AND TABLE_NAME = 'ado_smart_ops_kpi_atomic_day'
  21. AND COLUMN_NAME = 'is_deleted'
  22. AND (
  23. DATA_TYPE <> 'tinyint'
  24. OR IS_NULLABLE <> 'NO'
  25. OR COALESCE(COLUMN_DEFAULT, '') <> '0'
  26. )
  27. );
  28. SET @sql := IF(
  29. @needs_fix = 1,
  30. 'ALTER TABLE ado_smart_ops_kpi_atomic_day MODIFY is_deleted TINYINT NOT NULL DEFAULT 0 COMMENT ''删除标识''',
  31. 'DO 0'
  32. );
  33. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;