From 48172921d75f3e4511c8ae56e3bf1b071ae00244 Mon Sep 17 00:00:00 2001 From: En Date: Thu, 19 Mar 2026 16:54:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20V41=20=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E8=84=9A=E6=9C=AC=E7=9A=84=20SQL=20=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=88MySQL=20=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20IF=20EXISTS=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V41__optimize_association_tables.sql | 45 +++++++------------ 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/reading-platform-java/src/main/resources/db/migration/V41__optimize_association_tables.sql b/reading-platform-java/src/main/resources/db/migration/V41__optimize_association_tables.sql index 853dca8..7d6d384 100644 --- a/reading-platform-java/src/main/resources/db/migration/V41__optimize_association_tables.sql +++ b/reading-platform-java/src/main/resources/db/migration/V41__optimize_association_tables.sql @@ -13,16 +13,16 @@ -- ----------------------------------------------------- -- 说明:纯关联表,先删后增的更新模式,不需要唯一索引兜底 --- 删除联合唯一索引 -ALTER TABLE `course_collection_package` DROP INDEX IF EXISTS `uk_collection_package`; +-- 删除联合唯一索引(MySQL 不支持 IF EXISTS,直接删除) +ALTER TABLE `course_collection_package` DROP INDEX `uk_collection_package`; -- 删除 deleted 字段 -ALTER TABLE `course_collection_package` DROP COLUMN IF EXISTS `deleted`; +ALTER TABLE `course_collection_package` DROP COLUMN `deleted`; --- 保留普通索引(提高查询性能) +-- 添加普通索引(提高查询性能) ALTER TABLE `course_collection_package` -ADD INDEX IF NOT EXISTS `idx_collection_id` (`collection_id`), -ADD INDEX IF NOT EXISTS `idx_package_id` (`package_id`); +ADD INDEX `idx_collection_id` (`collection_id`), +ADD INDEX `idx_package_id` (`package_id`); -- ----------------------------------------------------- -- 2. tenant_course(租户 - 课程关联表) @@ -30,15 +30,15 @@ ADD INDEX IF NOT EXISTS `idx_package_id` (`package_id`); -- 说明:纯关联表,授权关系,不需要唯一索引兜底 -- 删除联合唯一索引 -ALTER TABLE `tenant_course` DROP INDEX IF EXISTS `uk_tenant_course`; +ALTER TABLE `tenant_course` DROP INDEX `uk_tenant_course`; -- 删除 deleted 字段 -ALTER TABLE `tenant_course` DROP COLUMN IF EXISTS `deleted`; +ALTER TABLE `tenant_course` DROP COLUMN `deleted`; --- 保留普通索引 +-- 添加普通索引 ALTER TABLE `tenant_course` -ADD INDEX IF NOT EXISTS `idx_tenant_id` (`tenant_id`), -ADD INDEX IF NOT EXISTS `idx_course_id` (`course_id`); +ADD INDEX `idx_tenant_id` (`tenant_id`), +ADD INDEX `idx_course_id` (`course_id`); -- ----------------------------------------------------- -- 3. class_teacher(班级 - 教师关联表) @@ -46,24 +46,9 @@ ADD INDEX IF NOT EXISTS `idx_course_id` (`course_id`); -- 说明:纯关联表,不需要 deleted 字段 -- 删除 deleted 字段 -ALTER TABLE `class_teacher` DROP COLUMN IF EXISTS `deleted`; +ALTER TABLE `class_teacher` DROP COLUMN `deleted`; --- 保留普通索引 +-- 添加普通索引 ALTER TABLE `class_teacher` -ADD INDEX IF NOT EXISTS `idx_class_id` (`class_id`), -ADD INDEX IF NOT EXISTS `idx_teacher_id` (`teacher_id`); - --- ----------------------------------------------------- --- 备注:以下表保留联合唯一索引和 deleted 字段 --- ----------------------------------------------------- --- 1. parent_student(家长 - 学生关系) --- - 关系相对稳定,有业务历史价值 --- - 保留 uk_parent_student 和 deleted 字段 --- --- 2. system_setting(系统设置) --- - 配置表,(tenant_id, setting_key) 天然应该唯一 --- - 保留 uk_tenant_key 和 deleted 字段 --- --- 3. tenant_package(租户 - 套餐授权) --- - 合同性质,有历史价值 --- - 保留 deleted 字段 +ADD INDEX `idx_class_id` (`class_id`), +ADD INDEX `idx_teacher_id` (`teacher_id`);