| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- -- S0ProcessFlowCard 租户隔离补齐(承接 1.0.389 的 12 张表,本脚本只处理这一张)。
- --
- -- 背景:AdoS0ProcessFlowCard 实体已实现 ITenantIdFilter 并映射 tenant_id,
- -- 且唯一索引声明为 (TenantId, FactoryRefId, FlowCardNo);物理表需同步,否则
- -- 启动后 CodeFirst 与实体声明不一致、且唯一键仍为跨租户口径。
- --
- -- 该表当前 0 行(2026-08-25 实测),因此无历史数据回填,只做 DDL 对齐。
- -- 组织解析改造(AdoS0ProcessFlowCardsController.ResolveDefaultOrgAsync 去 ClearFilter、
- -- 改为当前租户内 C1→C3→C2→C4 / F1→F2→F3→F4 分级解析)与本脚本同批提交。
- --
- -- 幂等:ADD COLUMN / ADD INDEX 均有 information_schema 存在性保护;
- -- 唯一键按实际列清单比对,已是目标结构则跳过。重复执行无副作用。
- -- 本脚本不含 DELETE / TRUNCATE / DROP TABLE,不创建任何演示数据。
- SET @t1 := (SELECT COUNT(*) FROM information_schema.TABLES
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard');
- SET @c1 := (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard' AND COLUMN_NAME='tenant_id');
- SET @a1 := CASE WHEN @t1=1 AND @c1=0
- THEN 'ALTER TABLE `S0ProcessFlowCard` ADD COLUMN `tenant_id` BIGINT NULL COMMENT ''租户Id'''
- ELSE 'SELECT 1' END;
- PREPARE p1a FROM @a1; EXECUTE p1a; DEALLOCATE PREPARE p1a;
- SET @i1 := (SELECT COUNT(*) FROM information_schema.STATISTICS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard' AND INDEX_NAME='idx_tenant');
- SET @b1 := CASE WHEN @t1=1 AND @i1=0
- THEN 'ALTER TABLE `S0ProcessFlowCard` ADD INDEX `idx_tenant` (`tenant_id`)'
- ELSE 'SELECT 1' END;
- PREPARE p1b FROM @b1; EXECUTE p1b; DEALLOCATE PREPARE p1b;
- -- 不回填:该表 0 行,无历史归属可推导,不伪造租户值。
- SET @u1 := (SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) FROM information_schema.STATISTICS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard'
- AND INDEX_NAME='uk_S0ProcessFlowCard_factory_flowcard');
- SET @e1 := CASE
- WHEN @t1<>1 THEN 'SELECT 1'
- WHEN @u1 = 'tenant_id,factory_ref_id,flow_card_no' THEN 'SELECT 1'
- WHEN @u1 IS NULL THEN
- 'ALTER TABLE `S0ProcessFlowCard` ADD UNIQUE INDEX `uk_S0ProcessFlowCard_factory_flowcard` (`tenant_id`,`factory_ref_id`,`flow_card_no`)'
- ELSE
- 'ALTER TABLE `S0ProcessFlowCard` DROP INDEX `uk_S0ProcessFlowCard_factory_flowcard`, ADD UNIQUE INDEX `uk_S0ProcessFlowCard_factory_flowcard` (`tenant_id`,`factory_ref_id`,`flow_card_no`)'
- END;
- PREPARE p1e FROM @e1; EXECUTE p1e; DEALLOCATE PREPARE p1e;
|