| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- -- ============================================================================
- -- 1.0.434:B-2A —— 把 UAT 租户 838257186181189 的 91 行 NbrControl 组织引用
- -- 从 Demo 租户组织迁回本租户自己的组织。
- --
- -- 背景(S0-ORG-REFERENCE-MODEL-FIX / B-1 已止血):
- -- 2026-06-14 commit a18c8a6c5 在「单部署」假设下把 DEFAULT_COMPANY_REF_ID=1329900200001 /
- -- DEFAULT_FACTORY_REF_ID=1329900200002 写死进 S0 仓储页;其后 1.0.317.sql 把这两个 SysOrg
- -- 改挂到 Demo 租户 797403760988230,前端常量未同步 → 各租户新增都写入别租户的组织 Id。
- -- B-1 已让服务端(AdoS0OrgScope.ResolveAsync)成为组织归属的唯一裁决者,新增不再产生污染;
- -- 本脚本只清理**当前 UAT 租户**的历史存量。
- --
- -- 迁移口径(2026-09-01 只读实测):
- -- 源:tenant_id=838257186181189 AND company_ref_id=1329900200001 AND factory_ref_id=1329900200002
- -- 目标:company_ref_id = factory_ref_id = 838257186320453
- -- (SysOrg.Id=838257186320453 / TenantId=838257186181189 / Code=UATTEST_CHL / Pid=0,
- -- 即 SysTenant(838257186181189).OrgId,与 B-1 后 AdoS0OrgScope 在该租户下的实际解析
- -- 结果 C4→F4 完全一致,故迁移后与新增行同口径。)
- -- 全 27 张含 company_ref_id 的表扫描结果:UAT 命中**只有 NbrControl 91 行**,
- -- 且 91 行的 (company_ref_id, factory_ref_id) 完全一致,无需分类处理。
- -- DepartmentMaster 在 UAT 下无跨租户行 → 不触碰,S8 App.json 的
- -- DepartmentFactoryRefId=1329900200002 本轮不改。
- --
- -- 唯一键 dry run(迁移前只读预演):
- -- NbrControl 唯一索引只有 PRIMARY(RecID) 与 uk_NbrControl_tenant_domain_nbrtype
- -- (tenant_id, domain_code, NbrType)——**不含 org 列**,改 org 结构上不可能撞唯一键;
- -- 模拟迁移后按该唯一键 GROUP BY HAVING COUNT(*)>1 实测 conflicts = 0。
- --
- -- 明确不做(本批边界):
- -- - 不动租户 797403760988229 的另外 167 行(B-2B 另批,口径待业务确认)
- -- - 不动 LEGACY-NUMERIC(1000 / 0 / 1)
- -- - 不改 SysOrg / SysTenant / 前端 / B-1 后端逻辑 / sysOrg:list / 1.0.431 / GrantMenu
- -- - 不改 Type=501 语义、不补 CustMaster/StdOpMaster 缺 tenant_id 的唯一键
- -- - 除两个 org 列外不写任何业务字段(NbrControl.UpdateTime 无 ON UPDATE CURRENT_TIMESTAMP,
- -- 本 UPDATE 不列它 → 业务字段与审计字段保持原值)
- --
- -- 安全护栏:EXISTS 子句确保目标组织确实属于该租户;目标组织不存在或归属不符时整条语句 0 行,
- -- 绝不把业务数据指向一个不属于本租户的组织。
- --
- -- 幂等:WHERE 精确命中旧值;首次 affected_rows=91,重复执行 affected_rows=0
- -- (旧值已不存在)。无该数据的库上同样为 0 行空操作。
- -- ============================================================================
- UPDATE `NbrControl`
- SET `company_ref_id` = 838257186320453,
- `factory_ref_id` = 838257186320453
- WHERE `tenant_id` = 838257186181189
- AND `company_ref_id` = 1329900200001
- AND `factory_ref_id` = 1329900200002
- AND EXISTS (
- SELECT 1 FROM `SysOrg` o
- WHERE o.`Id` = 838257186320453
- AND o.`TenantId` = 838257186181189
- );
|