1.0.412.verify.sql 5.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. -- ===========================================================================
  2. -- LINE-POST TENANT-UK CLOSURE VERIFY —— 全部 SELECT 真值标量断言,无 SET / 无用户变量
  3. -- ===========================================================================
  4. -- ---------- §1 索引已含 tenant_id(schema correctness 的核心断言) ----------
  5. SELECT COUNT(*) = 1 FROM information_schema.STATISTICS
  6. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillMaster'
  7. AND INDEX_NAME = 'IX_LineSkillMaster' AND COLUMN_NAME = 'tenant_id';
  8. SELECT COUNT(*) = 1 FROM information_schema.STATISTICS
  9. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillDetail'
  10. AND INDEX_NAME = 'IX_LineSkillDetail' AND COLUMN_NAME = 'tenant_id';
  11. -- 索引仍是 UNIQUE
  12. SELECT MIN(NON_UNIQUE) = 0 FROM information_schema.STATISTICS
  13. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillMaster' AND INDEX_NAME = 'IX_LineSkillMaster';
  14. SELECT MIN(NON_UNIQUE) = 0 FROM information_schema.STATISTICS
  15. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillDetail' AND INDEX_NAME = 'IX_LineSkillDetail';
  16. -- 索引列数与顺序(tenant_id 必须在第 1 位)
  17. SELECT COUNT(*) = 5 FROM information_schema.STATISTICS
  18. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillMaster' AND INDEX_NAME = 'IX_LineSkillMaster';
  19. SELECT COUNT(*) = 6 FROM information_schema.STATISTICS
  20. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillDetail' AND INDEX_NAME = 'IX_LineSkillDetail';
  21. SELECT COUNT(*) = 1 FROM information_schema.STATISTICS
  22. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillMaster'
  23. AND INDEX_NAME = 'IX_LineSkillMaster' AND COLUMN_NAME = 'tenant_id' AND SEQ_IN_INDEX = 1;
  24. SELECT COUNT(*) = 1 FROM information_schema.STATISTICS
  25. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'LineSkillDetail'
  26. AND INDEX_NAME = 'IX_LineSkillDetail' AND COLUMN_NAME = 'tenant_id' AND SEQ_IN_INDEX = 1;
  27. -- ---------- §2 目标行数 ----------
  28. SELECT COUNT(*) = 11 FROM LineSkillMaster
  29. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1);
  30. SELECT COUNT(*) = 11 FROM LineSkillDetail
  31. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1);
  32. -- ---------- §3 Site 必须全为 NULL(不得被写成租户/工厂/组织码) ----------
  33. SELECT COUNT(*) = 11 FROM LineSkillMaster
  34. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  35. AND Site IS NULL;
  36. SELECT COUNT(*) = 11 FROM LineSkillDetail
  37. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  38. AND Site IS NULL;
  39. -- ---------- §4 FK 闭合 ----------
  40. SELECT COUNT(*) = 0 FROM LineSkillMaster m
  41. WHERE m.tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  42. AND NOT EXISTS (SELECT 1 FROM LineMaster l WHERE l.tenant_id = m.tenant_id AND l.Line = m.ProdLine);
  43. SELECT COUNT(*) = 0 FROM LineSkillDetail d
  44. WHERE d.tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  45. AND NOT EXISTS (SELECT 1 FROM LineSkillMaster m WHERE m.RecID = d.LineSkillRecID AND m.tenant_id = d.tenant_id);
  46. SELECT COUNT(*) = 0 FROM LineSkillDetail d
  47. WHERE d.tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  48. AND NOT EXISTS (SELECT 1 FROM PersonSkill p WHERE p.Id = d.PersonSkillId AND p.tenant_id = d.tenant_id);
  49. -- ---------- §5 scope / domain ----------
  50. SELECT COUNT(*) = 11 FROM LineSkillMaster
  51. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  52. AND Domain = '8010' AND JOBNo = '102';
  53. SELECT COUNT(*) = 11 FROM LineSkillDetail
  54. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  55. AND Domain = '8010' AND JOBNo = '102' AND SkillNo = '102';
  56. -- ---------- §6 业务键唯一 ----------
  57. SELECT COUNT(*) = 0 FROM (
  58. SELECT ProdLine FROM LineSkillMaster
  59. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  60. GROUP BY ProdLine HAVING COUNT(*) > 1) x;
  61. SELECT COUNT(*) = 0 FROM (
  62. SELECT LineSkillRecID, PersonSkillId FROM LineSkillDetail
  63. WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1)
  64. GROUP BY LineSkillRecID, PersonSkillId HAVING COUNT(*) > 1) x;
  65. -- ---------- §7 源与他租户零变更 ----------
  66. SELECT COUNT(*) = 40 FROM LineSkillMaster WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='AIDOP' AND t.Status=1 LIMIT 1);
  67. SELECT COUNT(*) = 40 FROM LineSkillDetail WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='AIDOP' AND t.Status=1 LIMIT 1);
  68. SELECT COUNT(*) = 6 FROM LineSkillMaster WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='AIDOPB' AND t.Status=1 LIMIT 1);
  69. SELECT COUNT(*) = 210 FROM LineSkillDetail WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='AIDOPB' AND t.Status=1 LIMIT 1);
  70. -- ---------- §8 既有 S0 回归 ----------
  71. SELECT COUNT(*) = 20 FROM LineMaster WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1);
  72. SELECT COUNT(*) = 5 FROM PersonSkill WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1);
  73. SELECT COUNT(*) = 10 FROM EmpSkills WHERE tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id=t.OrgId WHERE o.Code='UATTEST_CHL' AND t.Status=1 LIMIT 1);