1.0.442.verify.sql 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. -- ===========================================================================
  2. -- 1.0.442 · verify S5 MissedPrint 租户归属回填
  3. --
  4. -- 契约(AutoVersionUpdate.RunVerifyScriptIfExists):逐条执行、取首行首列、
  5. -- 交 IsTruthy 判定,不真即抛。故:禁止 SET @var;每条语句自包含;
  6. -- 每条返回「通过为真」的标量(用 = 期望值 得 1/0),不得返回错误条数;
  7. -- 一条语句一个断言;文件以最后一条 SQL 的分号结束。
  8. -- ===========================================================================
  9. -- 01 · 全部标签都有租户归属(写路径 + 回填共同保证)
  10. SELECT COUNT(*) = 0
  11. FROM MissedPrint
  12. WHERE tenant_id IS NULL OR tenant_id = 0;
  13. -- 02 · 归属与唯一 SET 源 scm_shd.tenant_id 零矛盾
  14. SELECT COUNT(*) = 0
  15. FROM MissedPrint m
  16. JOIN (SELECT shddh, MIN(tenant_id) AS tenant_id
  17. FROM scm_shd
  18. GROUP BY shddh
  19. HAVING COUNT(DISTINCT tenant_id) = 1) d ON d.shddh = m.ShipperNbr
  20. WHERE IFNULL(m.tenant_id, 0) <> d.tenant_id;
  21. -- 03 · 与独立推导 CreateUser → SysUser.TenantId 零矛盾(交叉验证,非 SET 源)
  22. SELECT COUNT(*) = 0
  23. FROM MissedPrint m
  24. JOIN (SELECT Account, MIN(TenantId) AS TenantId
  25. FROM SysUser
  26. GROUP BY Account
  27. HAVING COUNT(DISTINCT TenantId) = 1) u ON u.Account = m.CreateUser
  28. WHERE IFNULL(m.tenant_id, 0) <> u.TenantId;
  29. -- 04 · 回填基线快照(2026-09-01 实测 DRY-RUN):合计 152
  30. SELECT (SELECT COUNT(*) FROM MissedPrint) = 152;
  31. -- 05 · 回填基线快照:AIDOP 租户 797403760988229 = 104
  32. SELECT (SELECT COUNT(*) FROM MissedPrint WHERE tenant_id = 797403760988229) = 104;
  33. -- 06 · 回填基线快照:UAT 租户 838257186181189 = 48
  34. SELECT (SELECT COUNT(*) FROM MissedPrint WHERE tenant_id = 838257186181189) = 48;
  35. -- 07 · 两个租户之外不得出现第三方归属
  36. SELECT COUNT(*) = 0
  37. FROM MissedPrint
  38. WHERE tenant_id NOT IN (797403760988229, 838257186181189);