1.0.514.verify.sql 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -- WIP-C3C.verify.sql
  2. SELECT (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()
  3. AND TABLE_NAME IN ('mdp_stg_s0_item_op_condition','bridge_item_op_condition',
  4. 'mdp_stg_s0_item_op_image','bridge_item_op_image')) = 4;
  5. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) FROM information_schema.STATISTICS
  6. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bridge_item_op_condition'
  7. AND INDEX_NAME = 'uk_bridge_item_op_condition' AND NON_UNIQUE = 0), '')
  8. = 'tenant_id,item_code,code_type';
  9. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) FROM information_schema.STATISTICS
  10. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bridge_item_op_image'
  11. AND INDEX_NAME = 'uk_bridge_item_op_image' AND NON_UNIQUE = 0), '')
  12. = 'tenant_id,item_code,op_code,file_type_code';
  13. -- 父键列名必须逐字 item_code
  14. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  15. AND TABLE_NAME IN ('bridge_item_op_condition','bridge_item_op_image')
  16. AND COLUMN_NAME = 'item_code') = 2;
  17. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  18. AND TABLE_NAME IN ('bridge_item_op_condition','bridge_item_op_image')
  19. AND COLUMN_NAME IN ('item_num','dim_item_id')) = 0;
  20. -- is_main 是属性不是键
  21. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE()
  22. AND INDEX_NAME = 'uk_bridge_item_op_condition' AND COLUMN_NAME = 'is_main') = 0;
  23. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  24. AND TABLE_NAME = 'bridge_item_op_condition' AND COLUMN_NAME = 'is_main') = 1;
  25. -- element_code 必须与 item_code 并存且分离(证明未把要素编码当物料码)
  26. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  27. AND TABLE_NAME = 'bridge_item_op_condition'
  28. AND COLUMN_NAME IN ('item_code','element_code')) = 2;
  29. -- 🔴 image 桥绝不能有 source_updated_at(源零时间列)
  30. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  31. AND TABLE_NAME = 'bridge_item_op_image' AND COLUMN_NAME = 'source_updated_at') = 0;
  32. -- 而 condition 桥有(源 UpdateTime 存在)
  33. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
  34. AND TABLE_NAME = 'bridge_item_op_condition' AND COLUMN_NAME = 'source_updated_at') = 1;
  35. -- LEGACY_SCOPE 不进唯一键
  36. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE()
  37. AND INDEX_NAME IN ('uk_bridge_item_op_condition','uk_bridge_item_op_image')
  38. AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  39. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  40. WHERE `entity_code` = 'S0_ITEM_OP_CONDITION'
  41. AND `biz_key_expr` COLLATE utf8mb4_bin = 'ItemNum,CodeType'
  42. AND `source_table_name` COLLATE utf8mb4_bin = 'ItemOpCondition'
  43. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_item_op_condition'
  44. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL
  45. AND `batch_size` = 5000) = 1;
  46. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  47. WHERE `entity_code` = 'S0_ITEM_OP_IMAGE'
  48. AND `biz_key_expr` COLLATE utf8mb4_bin = 'item_num,op,image_type_id'
  49. AND `source_table_name` COLLATE utf8mb4_bin = 'QualitySegmentImage'
  50. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_item_op_image'
  51. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL
  52. AND `batch_size` = 5000) = 1;
  53. -- 源侧前提:三个业务键分量当前无 NULL/空串(W6 风险的当前状态)
  54. SELECT (SELECT SUM(item_num IS NULL OR item_num = '' OR op IS NULL OR op = ''
  55. OR image_type_id IS NULL OR image_type_id = '') FROM `QualitySegmentImage`) = 0;
  56. SELECT (SELECT COUNT(*) FROM (SELECT 1 FROM `ItemOpCondition`
  57. GROUP BY `tenant_id`,`ItemNum`,`CodeType` HAVING COUNT(*) > 1) x) = 0;