add_tenant_id_to_business_tables.sql 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. -- ========================================================================
  2. -- AiDOP插件多租户改造:为业务表添加 tenant_id 字段
  3. -- 生成时间:2026-04-22
  4. -- 字段名统一为:tenant_id(小写下划线格式)
  5. -- ========================================================================
  6. USE aidopdev;
  7. -- ========================================================================
  8. -- Order 模块业务表
  9. -- ========================================================================
  10. -- 1. 合同评审主表
  11. ALTER TABLE ado_contract_review
  12. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)' AFTER UpdateTime;
  13. -- 2. 合同评审流程节点表
  14. ALTER TABLE ado_contract_review_flow
  15. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)' AFTER NodeStatus;
  16. -- 3. 计划联动看板
  17. ALTER TABLE LinkagePlan
  18. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)' AFTER Background;
  19. -- 4. 产品设计主表
  20. ALTER TABLE ProductDesign
  21. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  22. -- 5. 产品设计BOM表
  23. ALTER TABLE ProductDesignBom
  24. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  25. -- 6. 产品设计工艺表
  26. ALTER TABLE ProductDesignRouting
  27. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  28. -- 7. 销售订单明细表
  29. ALTER TABLE crm_seorderentry
  30. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  31. -- 8. 发货计划主表
  32. ALTER TABLE ShippingPlan
  33. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  34. -- 9. 发货计划明细表
  35. ALTER TABLE ShippingPlanDetail
  36. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  37. -- 10. ASN发货单主表
  38. ALTER TABLE AsnShipperMaster
  39. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  40. -- 11. ASN发货单明细表
  41. ALTER TABLE AsnShipperDetail
  42. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  43. -- ========================================================================
  44. -- Production 模块业务表
  45. -- ========================================================================
  46. -- 12. 排产异常日志
  47. ALTER TABLE ScheduleExceptionMaster
  48. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  49. -- ========================================================================
  50. -- 创建租户ID索引(提升查询性能)
  51. -- ========================================================================
  52. -- 检查并创建索引(如果不存在)
  53. SET @db = 'aidopdev';
  54. -- Order 模块索引
  55. SET @table = 'ado_contract_review';
  56. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  57. PREPARE stmt FROM @sql;
  58. EXECUTE stmt;
  59. DEALLOCATE PREPARE stmt;
  60. SET @table = 'ado_contract_review_flow';
  61. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  62. PREPARE stmt FROM @sql;
  63. EXECUTE stmt;
  64. DEALLOCATE PREPARE stmt;
  65. SET @table = 'LinkagePlan';
  66. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  67. PREPARE stmt FROM @sql;
  68. EXECUTE stmt;
  69. DEALLOCATE PREPARE stmt;
  70. SET @table = 'ProductDesign';
  71. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  72. PREPARE stmt FROM @sql;
  73. EXECUTE stmt;
  74. DEALLOCATE PREPARE stmt;
  75. SET @table = 'ProductDesignBom';
  76. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  77. PREPARE stmt FROM @sql;
  78. EXECUTE stmt;
  79. DEALLOCATE PREPARE stmt;
  80. SET @table = 'ProductDesignRouting';
  81. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  82. PREPARE stmt FROM @sql;
  83. EXECUTE stmt;
  84. DEALLOCATE PREPARE stmt;
  85. SET @table = 'crm_seorder';
  86. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  87. PREPARE stmt FROM @sql;
  88. EXECUTE stmt;
  89. DEALLOCATE PREPARE stmt;
  90. SET @table = 'crm_seorderentry';
  91. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  92. PREPARE stmt FROM @sql;
  93. EXECUTE stmt;
  94. DEALLOCATE PREPARE stmt;
  95. SET @table = 'ShippingPlan';
  96. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  97. PREPARE stmt FROM @sql;
  98. EXECUTE stmt;
  99. DEALLOCATE PREPARE stmt;
  100. SET @table = 'ShippingPlanDetail';
  101. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  102. PREPARE stmt FROM @sql;
  103. EXECUTE stmt;
  104. DEALLOCATE PREPARE stmt;
  105. SET @table = 'AsnShipperMaster';
  106. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  107. PREPARE stmt FROM @sql;
  108. EXECUTE stmt;
  109. DEALLOCATE PREPARE stmt;
  110. SET @table = 'AsnShipperDetail';
  111. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  112. PREPARE stmt FROM @sql;
  113. EXECUTE stmt;
  114. DEALLOCATE PREPARE stmt;
  115. SET @table = 'ScheduleExceptionMaster';
  116. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  117. PREPARE stmt FROM @sql;
  118. EXECUTE stmt;
  119. DEALLOCATE PREPARE stmt;
  120. -- ========================================================================
  121. -- 验证:检查所有业务表的 tenant_id 字段
  122. -- ========================================================================
  123. SELECT '业务表 tenant_id 字段检查' AS 检查项;
  124. SELECT
  125. TABLE_NAME AS 表名,
  126. COLUMN_NAME AS 字段名,
  127. COLUMN_TYPE AS 字段类型,
  128. IS_NULLABLE AS 是否可空,
  129. COLUMN_COMMENT AS 注释
  130. FROM INFORMATION_SCHEMA.COLUMNS
  131. WHERE TABLE_SCHEMA = 'aidopdev'
  132. AND TABLE_NAME IN (
  133. 'ado_contract_review',
  134. 'ado_contract_review_flow',
  135. 'LinkagePlan',
  136. 'ProductDesign',
  137. 'ProductDesignBom',
  138. 'ProductDesignRouting',
  139. 'crm_seorder',
  140. 'crm_seorderentry',
  141. 'ShippingPlan',
  142. 'ShippingPlanDetail',
  143. 'AsnShipperMaster',
  144. 'AsnShipperDetail',
  145. 'ScheduleExceptionMaster'
  146. )
  147. AND COLUMN_NAME = 'tenant_id'
  148. ORDER BY TABLE_NAME;
  149. -- ========================================================================
  150. -- 验证:检查索引创建情况
  151. -- ========================================================================
  152. SELECT '业务表 tenant_id 索引检查' AS 检查项;
  153. SELECT
  154. TABLE_NAME AS 表名,
  155. INDEX_NAME AS 索引名,
  156. COLUMN_NAME AS 字段名,
  157. SEQ_IN_INDEX AS 序号,
  158. NON_UNIQUE AS 非唯一
  159. FROM INFORMATION_SCHEMA.STATISTICS
  160. WHERE TABLE_SCHEMA = 'aidopdev'
  161. AND TABLE_NAME IN (
  162. 'ado_contract_review',
  163. 'ado_contract_review_flow',
  164. 'LinkagePlan',
  165. 'ProductDesign',
  166. 'ProductDesignBom',
  167. 'ProductDesignRouting',
  168. 'crm_seorder',
  169. 'crm_seorderentry',
  170. 'ShippingPlan',
  171. 'ShippingPlanDetail',
  172. 'AsnShipperMaster',
  173. 'AsnShipperDetail',
  174. 'ScheduleExceptionMaster'
  175. )
  176. AND COLUMN_NAME = 'tenant_id'
  177. ORDER BY TABLE_NAME;
  178. -- ========================================================================
  179. -- 完成!
  180. -- ========================================================================
  181. SELECT '✅ 业务表 tenant_id 字段添加完成!' AS 状态;