chore(sync): 同步当前工作区全部变更(学员学号可编辑并留空自动生成等)
This commit is contained in:
1 parent
01e949093a
commit
ee629f2f3e
534 files changed
+72978
-2720
No files matched your search
@@ -0,0 +1,42 @@
|
||||
-- ============================================================================
|
||||
-- 教师住宿分配(复用 train_accommodation,与学生住宿逻辑隔离)
|
||||
--
|
||||
-- 1. 新增 occupant_type 区分入住人员类型:student 学员 / teacher 教师
|
||||
-- - 存量数据全部为学员住宿,默认值 'student' 保证学生逻辑完全不变
|
||||
-- - 教师住宿记录 occupant_type = 'teacher',enrollment_id 存 train_teacher.id
|
||||
-- 2. 删除 fk_accomm_enrollment 外键:教师住宿的 enrollment_id 不再指向
|
||||
-- train_enrollment(enrollment_id),改由业务层按 occupant_type 分别校验
|
||||
-- 3. 唯一索引由「全局活唯一(enrollment_id)」改为「按人员类型隔离的活唯一
|
||||
-- (occupant_type, enrollment_id)」,避免教师 id 与参训档案 id 数值碰撞
|
||||
--
|
||||
-- 适配数据库:Kingbase / PostgreSQL(train 模块以该语法为准)
|
||||
-- ============================================================================
|
||||
|
||||
-- 1. 入住人员类型列
|
||||
ALTER TABLE train_accommodation ADD COLUMN occupant_type VARCHAR(16) NOT NULL DEFAULT 'student';
|
||||
|
||||
COMMENT ON COLUMN train_accommodation.occupant_type IS '入住人员类型:student 学员 / teacher 教师';
|
||||
|
||||
-- 2. 解除参训档案外键约束(教师住宿记录不指向 train_enrollment)
|
||||
ALTER TABLE train_accommodation DROP CONSTRAINT IF EXISTS fk_accomm_enrollment;
|
||||
|
||||
-- 3. 重建活跃唯一索引:按人员类型隔离
|
||||
DROP INDEX IF EXISTS uq_accommodation_enroll;
|
||||
|
||||
CREATE UNIQUE INDEX uq_accommodation_occupant
|
||||
ON train_accommodation (occupant_type, enrollment_id)
|
||||
WHERE accommodation_status IN (0, 1);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_accommodation_occupant
|
||||
ON train_accommodation (occupant_type, enrollment_id);
|
||||
|
||||
-- ============================================================================
|
||||
-- MySQL 兼容说明(如需在 MySQL 环境执行,替换为下列语句):
|
||||
-- ALTER TABLE train_accommodation ADD COLUMN occupant_type VARCHAR(16) NOT NULL DEFAULT 'student'
|
||||
-- COMMENT '入住人员类型:student 学员 / teacher 教师';
|
||||
-- ALTER TABLE train_accommodation DROP FOREIGN KEY fk_accomm_enrollment;
|
||||
-- ALTER TABLE train_accommodation DROP INDEX uq_accommodation_enroll;
|
||||
-- CREATE UNIQUE INDEX uq_accommodation_occupant
|
||||
-- ON train_accommodation (occupant_type, enrollment_id, accommodation_status);
|
||||
-- (MySQL 无部分索引,若需「仅活跃唯一」请使用生成列方案,教师模块不依赖该唯一性做业务判断)
|
||||
-- ============================================================================
|
||||
Reference in new issue
Block a user