1.0.256.sql 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. -- =============================================================================
  2. -- 1.0.256 — S5 IQC / S6 IPQC 同库分租户:贴源源表补 tenant_id 列 + 历史归属回填
  3. --
  4. -- 背景:qms_qcp_inspbill / qms_qcp_inspecapplyn / qms_qcp_insappnentry(IQC)与
  5. -- qms_gcjyd / qms_gcjydzb(IPQC)均为外部贴源表,原无 tenant_id,全库共享 →
  6. -- 同库多租户下跨租户可见。本迁移补 tenant_id 列并回填历史归属,配合服务层查询/
  7. -- 详情/流程的强制租户过滤(本版本随附代码),实现"当前租户只见自己数据"。
  8. --
  9. -- 回填口径:无租户(NULL) 或落在框架默认租户 1300000000001 的历史行 → 参考租户
  10. -- 797403760988229;已归具体租户(如 AIDOPB 824585161322565)的预置行不动。
  11. -- qms_qcp_* / qms_gcjyd* 为贴源表,新环境为空、1300000000001 为框架默认租户
  12. -- (非真实客户数据),故此口径安全。
  13. -- 幂等:ADD COLUMN 前用 information_schema 判存在;回填带条件;重复执行安全。
  14. -- 兼容:MySQL 5.x / 8.x(PREPARE/EXECUTE 模式,无需 DELIMITER)。
  15. -- =============================================================================
  16. SET NAMES utf8mb4;
  17. SET @db = DATABASE();
  18. SET @col = 'tenant_id';
  19. -- ── IQC 三表加列 ────────────────────────────────────────────────────────────
  20. SET @tbl = 'qms_qcp_inspbill';
  21. SET @exists = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=@db AND TABLE_NAME=@tbl AND COLUMN_NAME=@col);
  22. SET @sql = IF(@exists=0, CONCAT('ALTER TABLE ',@tbl,' ADD COLUMN ',@col,' BIGINT NULL COMMENT ''租户id(DOP 多租户隔离列)'''), 'SELECT 1');
  23. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  24. SET @tbl = 'qms_qcp_inspecapplyn';
  25. SET @exists = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=@db AND TABLE_NAME=@tbl AND COLUMN_NAME=@col);
  26. SET @sql = IF(@exists=0, CONCAT('ALTER TABLE ',@tbl,' ADD COLUMN ',@col,' BIGINT NULL COMMENT ''租户id(DOP 多租户隔离列)'''), 'SELECT 1');
  27. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  28. SET @tbl = 'qms_qcp_insappnentry';
  29. SET @exists = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=@db AND TABLE_NAME=@tbl AND COLUMN_NAME=@col);
  30. SET @sql = IF(@exists=0, CONCAT('ALTER TABLE ',@tbl,' ADD COLUMN ',@col,' BIGINT NULL COMMENT ''租户id(DOP 多租户隔离列)'''), 'SELECT 1');
  31. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  32. -- ── IPQC 两表加列 ───────────────────────────────────────────────────────────
  33. SET @tbl = 'qms_gcjyd';
  34. SET @exists = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=@db AND TABLE_NAME=@tbl AND COLUMN_NAME=@col);
  35. SET @sql = IF(@exists=0, CONCAT('ALTER TABLE ',@tbl,' ADD COLUMN ',@col,' BIGINT NULL COMMENT ''租户id(DOP 多租户隔离列)'''), 'SELECT 1');
  36. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  37. SET @tbl = 'qms_gcjydzb';
  38. SET @exists = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=@db AND TABLE_NAME=@tbl AND COLUMN_NAME=@col);
  39. SET @sql = IF(@exists=0, CONCAT('ALTER TABLE ',@tbl,' ADD COLUMN ',@col,' BIGINT NULL COMMENT ''租户id(DOP 多租户隔离列)'''), 'SELECT 1');
  40. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  41. -- ── IQC 历史归属回填(NULL 或 1300000000001 → 797;具体租户预置行不动)────────
  42. UPDATE qms_qcp_inspbill SET tenant_id=797403760988229 WHERE tenant_id IS NULL OR tenant_id=1300000000001;
  43. UPDATE qms_qcp_inspecapplyn SET tenant_id=797403760988229 WHERE tenant_id IS NULL OR tenant_id=1300000000001;
  44. UPDATE qms_qcp_insappnentry SET tenant_id=797403760988229 WHERE tenant_id IS NULL OR tenant_id=1300000000001;
  45. UPDATE ado_s5_iqc_sqe_disposition SET tenant_id=797403760988229 WHERE tenant_id IS NULL OR tenant_id=1300000000001;
  46. -- IPQC 两表历史为空,无需回填(新数据由抽数/预置携带 tenant_id)。