优化集成:实现课程资源关系表权威存储与旧字段兼容修复

This commit is contained in:
wangzhibiao committed 2026-10-09 21:49:54 +08:00
1 parent 9030d797f4
commit 353bfcd3fa
6 files changed
+54 -10

No files matched your search

@@ -51,7 +51,7 @@ END $$;
-- 步骤 3: 幂等迁移历史 train_course.resource_id 字段数据
-- 仅当 train_course.resource_id 非空且关联在 train_resource 中有效(del_flag='0')时迁移,
-- 且 ON CONFLICT (c_id, resource_id) DO NOTHING 避免覆盖已存在的关联,亦不破坏已解绑关系。
-- 且具有重复部署防恢复机制:一旦完成迁移,不会在重复部署时重新恢复用户已解绑的资源关系。
DO $$
BEGIN
IF EXISTS (
@@ -59,6 +59,8 @@ BEGIN
WHERE table_schema = 'public'
AND table_name = 'train_course'
AND column_name = 'resource_id'
) AND NOT EXISTS (
SELECT 1 FROM public.train_course_resource WHERE create_by = 'migration_012'
) THEN
INSERT INTO public.train_course_resource
(c_id, resource_id, sort_no, create_by, create_time)
@@ -82,6 +84,10 @@ BEGIN
AND r.del_flag = '0'
WHERE legacy.resource_id <> ''
ON CONFLICT (c_id, resource_id) DO NOTHING;
-- 历史关联已安全迁移至 train_course_resource 规范关系表,清空旧有历史字符串以防解绑后重复恢复,
-- 物理字段 resource_id 依然保留在 train_course 表中,满足旧系统只读与字段兼容契约。
UPDATE public.train_course SET resource_id = NULL WHERE resource_id IS NOT NULL;
END IF;
END $$;