1.0.438.verify.sql 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. -- ===========================================================================
  2. -- S6-FUNC-004-TOOLING-LEDGER-CRUD-1 · verify
  3. --
  4. -- 契约(AutoVersionUpdate.RunVerifyScriptIfExists):逐条执行、取首行首列、
  5. -- 交 IsTruthy 判定,不真即抛。故:禁止 SET @var;每条语句自包含;
  6. -- 每条返回「通过为真」的标量(用 = 期望值 得 1/0),不得返回错误条数;
  7. -- 一条语句一个断言;文件以最后一条 SQL 的分号结束。
  8. -- ===========================================================================
  9. -- 01 · 唯一索引存在,且恰好由 (tenant_id, MoldTypeCode) 两列组成
  10. SELECT COUNT(*) = 2
  11. FROM information_schema.STATISTICS
  12. WHERE TABLE_SCHEMA = DATABASE()
  13. AND TABLE_NAME = 'MoldToolList'
  14. AND INDEX_NAME = 'uk_MoldToolList_tenant_type_code'
  15. AND COLUMN_NAME IN ('tenant_id', 'MoldTypeCode');
  16. -- 02 · 该索引是 UNIQUE(NON_UNIQUE = 0)
  17. SELECT COUNT(*) = 2
  18. FROM information_schema.STATISTICS
  19. WHERE TABLE_SCHEMA = DATABASE()
  20. AND TABLE_NAME = 'MoldToolList'
  21. AND INDEX_NAME = 'uk_MoldToolList_tenant_type_code'
  22. AND NON_UNIQUE = 0;
  23. -- 03 · 租户内业务编码无重复
  24. SELECT (SELECT COUNT(*) FROM (
  25. SELECT tenant_id, MoldTypeCode
  26. FROM MoldToolList
  27. GROUP BY tenant_id, MoldTypeCode
  28. HAVING COUNT(*) > 1) x) = 0;
  29. -- 04 · 未改动 tenant_id 可空性(本批只加索引,不做列变更)
  30. SELECT COUNT(*) = 1
  31. FROM information_schema.COLUMNS
  32. WHERE TABLE_SCHEMA = DATABASE()
  33. AND TABLE_NAME = 'MoldToolList'
  34. AND COLUMN_NAME = 'tenant_id'
  35. AND IS_NULLABLE = 'YES';
  36. -- 05 · 表列数仍为 24(未新增/删除任何列)
  37. SELECT COUNT(*) = 24
  38. FROM information_schema.COLUMNS
  39. WHERE TABLE_SCHEMA = DATABASE()
  40. AND TABLE_NAME = 'MoldToolList';