25 lines
1020 B
SQL
25 lines
1020 B
SQL
|
|
-- Migration: Add outline_mode to projects table
|
||
|
|
-- Description: 为项目表添加大纲模式字段,支持一对一和一对多两种模式
|
||
|
|
-- Date: 2025-11-27
|
||
|
|
|
||
|
|
-- 1. 添加 outline_mode 字段
|
||
|
|
ALTER TABLE projects
|
||
|
|
ADD COLUMN outline_mode VARCHAR(20) NOT NULL DEFAULT 'one-to-many';
|
||
|
|
|
||
|
|
-- 2. 添加检查约束,确保只能是两个有效值之一
|
||
|
|
ALTER TABLE projects
|
||
|
|
ADD CONSTRAINT check_outline_mode
|
||
|
|
CHECK (outline_mode IN ('one-to-one', 'one-to-many'));
|
||
|
|
|
||
|
|
-- 3. 创建索引以提高查询性能
|
||
|
|
CREATE INDEX idx_projects_outline_mode ON projects(outline_mode);
|
||
|
|
|
||
|
|
-- 4. 为现有项目设置默认模式为一对多(细化模式)
|
||
|
|
-- 这是因为现有项目大多使用展开功能
|
||
|
|
UPDATE projects SET outline_mode = 'one-to-many' WHERE outline_mode IS NULL;
|
||
|
|
|
||
|
|
-- 5. 添加注释
|
||
|
|
COMMENT ON COLUMN projects.outline_mode IS '大纲章节模式: one-to-one(传统模式,1大纲→1章节) 或 one-to-many(细化模式,1大纲→N章节)';
|
||
|
|
|
||
|
|
-- 验证迁移结果
|
||
|
|
-- SELECT id, title, outline_mode FROM projects LIMIT 10;
|