1.0.508.verify.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. -- 1.0.508.verify.sql
  2. -- 契约(CURRENT.md > F-11):禁 SET @var · 每条返回 1/0 · 一条一断言 · 末条为真 SELECT。
  3. -- 断言强度沿用 Phase 1 Final Review:UK 断言**精确列序**(CREATE TABLE IF NOT EXISTS 会静默 no-op,
  4. -- 只数列数会放过结构漂移);字符串等值一律 COLLATE utf8mb4_bin(biz_key_expr 大小写是致命维度)。
  5. SELECT (SELECT COUNT(*) FROM information_schema.TABLES
  6. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('mdp_stg_s0_label_type','mdp_stg_s0_sop_file_type','mdp_stg_s0_quality_base_type','mdp_stg_s0_qms_dict')) = 4;
  7. SELECT (SELECT COUNT(*) FROM information_schema.TABLES
  8. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('ref_label_type','ref_sop_file_type','ref_quality_base_type','ref_sampling_scheme','ref_inspection_item','ref_inspection_method','ref_inspection_frequency','ref_inspection_instrument')) = 8;
  9. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  10. FROM information_schema.STATISTICS
  11. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mdp_stg_s0_label_type'
  12. AND INDEX_NAME = 'uk_stg_s0_label_type' AND NON_UNIQUE = 0), '')
  13. = 'tenant_id,source_system,source_table,source_row_id';
  14. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  15. FROM information_schema.STATISTICS
  16. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mdp_stg_s0_sop_file_type'
  17. AND INDEX_NAME = 'uk_stg_s0_sop_file_type' AND NON_UNIQUE = 0), '')
  18. = 'tenant_id,source_system,source_table,source_row_id';
  19. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  20. FROM information_schema.STATISTICS
  21. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mdp_stg_s0_quality_base_type'
  22. AND INDEX_NAME = 'uk_stg_s0_quality_base_type' AND NON_UNIQUE = 0), '')
  23. = 'tenant_id,source_system,source_table,source_row_id';
  24. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  25. FROM information_schema.STATISTICS
  26. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mdp_stg_s0_qms_dict'
  27. AND INDEX_NAME = 'uk_stg_s0_qms_dict' AND NON_UNIQUE = 0), '')
  28. = 'tenant_id,source_system,source_table,source_row_id';
  29. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  30. FROM information_schema.STATISTICS
  31. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_label_type'
  32. AND INDEX_NAME = 'uk_ref_label_type' AND NON_UNIQUE = 0), '')
  33. = 'tenant_id,label_type_code';
  34. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  35. FROM information_schema.STATISTICS
  36. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_sop_file_type'
  37. AND INDEX_NAME = 'uk_ref_sop_file_type' AND NON_UNIQUE = 0), '')
  38. = 'tenant_id,file_type_code';
  39. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  40. FROM information_schema.STATISTICS
  41. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_quality_base_type'
  42. AND INDEX_NAME = 'uk_ref_quality_base_type' AND NON_UNIQUE = 0), '')
  43. = 'tenant_id,type_category,type_code';
  44. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  45. FROM information_schema.STATISTICS
  46. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_sampling_scheme'
  47. AND INDEX_NAME = 'uk_ref_sampling_scheme' AND NON_UNIQUE = 0), '')
  48. = 'tenant_id,scheme_code';
  49. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  50. FROM information_schema.STATISTICS
  51. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_item'
  52. AND INDEX_NAME = 'uk_ref_inspection_item' AND NON_UNIQUE = 0), '')
  53. = 'tenant_id,item_code';
  54. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  55. FROM information_schema.STATISTICS
  56. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_method'
  57. AND INDEX_NAME = 'uk_ref_inspection_method' AND NON_UNIQUE = 0), '')
  58. = 'tenant_id,method_code';
  59. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  60. FROM information_schema.STATISTICS
  61. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_frequency'
  62. AND INDEX_NAME = 'uk_ref_inspection_frequency' AND NON_UNIQUE = 0), '')
  63. = 'tenant_id,frequency_code';
  64. SELECT IFNULL((SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX)
  65. FROM information_schema.STATISTICS
  66. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_instrument'
  67. AND INDEX_NAME = 'uk_ref_inspection_instrument' AND NON_UNIQUE = 0), '')
  68. = 'tenant_id,instrument_code';
  69. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS
  70. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('ref_label_type','ref_sop_file_type','ref_quality_base_type','ref_sampling_scheme','ref_inspection_item','ref_inspection_method','ref_inspection_frequency','ref_inspection_instrument')
  71. AND COLUMN_NAME = 'tenant_id' AND IS_NULLABLE = 'NO') = 8;
  72. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS
  73. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('mdp_stg_s0_label_type','mdp_stg_s0_sop_file_type','mdp_stg_s0_quality_base_type','mdp_stg_s0_qms_dict')
  74. AND COLUMN_NAME = 'tenant_id' AND IS_NULLABLE = 'NO') = 4;
  75. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  76. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_label_type'
  77. AND INDEX_NAME = 'uk_ref_label_type' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  78. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  79. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_sop_file_type'
  80. AND INDEX_NAME = 'uk_ref_sop_file_type' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  81. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  82. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_quality_base_type'
  83. AND INDEX_NAME = 'uk_ref_quality_base_type' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  84. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  85. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_sampling_scheme'
  86. AND INDEX_NAME = 'uk_ref_sampling_scheme' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  87. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  88. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_item'
  89. AND INDEX_NAME = 'uk_ref_inspection_item' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  90. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  91. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_method'
  92. AND INDEX_NAME = 'uk_ref_inspection_method' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  93. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  94. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_frequency'
  95. AND INDEX_NAME = 'uk_ref_inspection_frequency' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  96. SELECT (SELECT COUNT(*) FROM information_schema.STATISTICS
  97. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_instrument'
  98. AND INDEX_NAME = 'uk_ref_inspection_instrument' AND COLUMN_NAME IN ('domain_code','company_id','factory_id')) = 0;
  99. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS
  100. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_sop_file_type'
  101. AND COLUMN_NAME = 'source_updated_at') = 0;
  102. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS
  103. WHERE TABLE_SCHEMA = DATABASE()
  104. AND TABLE_NAME IN ('ref_sampling_scheme','ref_inspection_item','ref_inspection_method',
  105. 'ref_inspection_frequency','ref_inspection_instrument')
  106. AND COLUMN_NAME IN ('status_code','enable_code') AND DATA_TYPE = 'varchar') = 10;
  107. SELECT (SELECT COUNT(*) FROM information_schema.COLUMNS
  108. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ref_inspection_frequency'
  109. AND COLUMN_NAME = 'remark') = 1;
  110. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  111. WHERE `entity_code` = 'S0_LABEL_TYPE'
  112. AND `biz_key_expr` COLLATE utf8mb4_bin = 'bar_type'
  113. AND `source_table_name` COLLATE utf8mb4_bin = 'BarCodeType'
  114. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_label_type'
  115. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  116. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  117. WHERE `entity_code` = 'S0_SOP_FILE_TYPE'
  118. AND `biz_key_expr` COLLATE utf8mb4_bin = 'image_type_id'
  119. AND `source_table_name` COLLATE utf8mb4_bin = 'ImageType'
  120. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_sop_file_type'
  121. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  122. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  123. WHERE `entity_code` = 'S0_QUALITY_BASE_TYPE'
  124. AND `biz_key_expr` COLLATE utf8mb4_bin = 'type_category,type_code'
  125. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_quality_base_type'
  126. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_quality_base_type'
  127. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  128. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  129. WHERE `entity_code` = 'S0_SAMPLING_SCHEME'
  130. AND `biz_key_expr` COLLATE utf8mb4_bin = 'FNUMBER'
  131. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_sampscheme'
  132. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_qms_dict'
  133. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  134. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  135. WHERE `entity_code` = 'S0_INSPECTION_ITEM'
  136. AND `biz_key_expr` COLLATE utf8mb4_bin = 'FNUMBER'
  137. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_inspectionitems'
  138. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_qms_dict'
  139. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  140. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  141. WHERE `entity_code` = 'S0_INSPECTION_METHOD'
  142. AND `biz_key_expr` COLLATE utf8mb4_bin = 'FNUMBER'
  143. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_inspection_method'
  144. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_qms_dict'
  145. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  146. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  147. WHERE `entity_code` = 'S0_INSPECTION_FREQUENCY'
  148. AND `biz_key_expr` COLLATE utf8mb4_bin = 'FNUMBER'
  149. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_inspectionfreq'
  150. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_qms_dict'
  151. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  152. SELECT (SELECT COUNT(*) FROM `mdp_entity`
  153. WHERE `entity_code` = 'S0_INSPECTION_INSTRUMENT'
  154. AND `biz_key_expr` COLLATE utf8mb4_bin = 'FNUMBER'
  155. AND `source_table_name` COLLATE utf8mb4_bin = 'qms_inspectioninstru'
  156. AND `target_table_name` COLLATE utf8mb4_bin = 'mdp_stg_s0_qms_dict'
  157. AND `status` = 1 AND `sync_mode` = 'FULL' AND `incr_column` IS NULL) = 1;
  158. SELECT (SELECT COUNT(*) FROM `mdp_entity` e JOIN `mdp_source` s ON s.`id` = e.`source_id`
  159. WHERE e.`entity_code` LIKE 'S0\_%' AND s.`source_code` <> 'AIDOPDEV_MYSQL') = 0;