实战:让 CC 做数据库改动前评审

数据库改动前先让 CC 做只读评审:确认迁移体系、影响范围、回滚方案、兼容窗口和上线顺序。不要让 CC 直接执行生产 SQL。

数据库任务最重要的不是“会不会写 SQL”,而是“能不能避免不可逆事故”。让 CC 参与数据库改动前,先让它做只读评审。

什么时候需要数据库改动前评审

只要可能影响已有数据,就要评审。

数据库评审先判断风险等级:

任务风险等级说明
只读查询低到中仍要注意隐私和性能
新增可空字段通常可控,但要看旧代码
新增非空字段需要默认值或回填
修改字段类型可能破坏旧数据和查询
删除字段或表极高可能不可逆
修生产数据极高必须备份、审批、回滚

第 1 步:只读分析迁移体系

/plan

请做数据库改动前评审,不要执行 SQL,不要修改文件。

任务目标:
【描述数据库相关需求】

请只读分析:
1. 项目使用什么 ORM、迁移工具或 SQL 管理方式。
2. 历史迁移文件在哪里。
3. 迁移命名和回滚风格是什么。
4. 涉及哪些表和字段。
5. 是否需要新增迁移文件。
6. 是否需要兼容旧代码或旧数据。

如果 CC 没读迁移文件就开始写 SQL,先拦住:

请先停止生成 SQL。

数据库评审必须先确认:
1. 当前项目迁移体系。
2. 历史迁移风格。
3. 涉及模型和表字段。
4. 回滚方式。
5. 上线顺序。

第 2 步:确认改动类型

请判断本次数据库任务属于哪类:
1. 只读查询。
2. 修复数据。
3. 新增字段或表。
4. 修改字段类型或约束。
5. 删除字段或表。
6. 增加索引或性能优化。

请说明每类风险和是否需要人工确认。

第 3 步:评审风险

数据库改动至少要评审这些问题:

风险要问什么
数据兼容老数据怎么办,是否需要默认值
代码兼容新旧代码同时存在时是否会报错
回滚回滚是否会丢数据
性能是否锁表,是否影响大表查询
权限是否涉及用户隐私或敏感字段
上线顺序是否要先发代码再跑迁移,还是反过来

先判断是否不可逆

数据库任务最关键的问题是:失败后能不能回到原状。

操作可逆性
新增可空字段通常可逆
新增索引通常可逆,但要看大表影响
修改字段类型可能不可逆
删除字段高度不可逆
清理生产数据高度不可逆
批量更新数据取决于是否有备份和反向脚本

让 CC 先回答:

请判断这次数据库改动是否可逆。

要求:
1. 哪些操作可以安全回滚。
2. 哪些操作回滚会丢数据。
3. 是否需要先备份。
4. 是否需要分阶段上线。
5. 如果不可逆,必须由谁人工确认。

提示词:

请从数据库评审角度审查这个方案。

要求:
1. 数据兼容风险。
2. 代码兼容风险。
3. 回滚风险。
4. 性能风险。
5. 权限和隐私风险。
6. 上线顺序建议。
7. 必须人工确认的点。

兼容窗口怎么问

很多数据库事故发生在新旧代码同时存在的窗口:

请专门评审新旧代码兼容窗口。

请说明:
1. 旧代码遇到新表结构是否安全。
2. 新代码遇到旧数据是否安全。
3. 是否需要分阶段上线。
4. 是否需要先加字段、回填,再启用逻辑。
5. 回滚时是否会丢数据。

第 4 步:让 CC 写迁移草案

只有评审通过后,才让 CC 写迁移草案,并且不要执行。

可以生成迁移草案,但不要执行。

要求:
1. 按项目现有迁移风格写。
2. 说明每一处变更的目的。
3. 如果有 down migration,说明回滚影响。
4. 不连接数据库。
5. 不处理生产数据。
6. 生成后先等待我审查。

第 5 步:执行前最终清单

真正执行前,必须有人工确认。

请生成数据库改动执行前清单。

检查:
1. 当前环境是否确认。
2. 是否有备份。
3. 是否有回滚方案。
4. 是否确认影响表和字段。
5. 是否确认上线顺序。
6. 是否确认不会暴露或破坏敏感数据。
7. 是否需要灰度或低峰执行。

禁止事项

如果 CC 输出了可执行 SQL,也要先当作草案处理。数据库任务的最终执行权不应该交给聊天结果。

评审结论模板

请输出数据库改动评审结论。

格式:
1. 是否建议继续:是 / 否 / 需要补充信息。
2. 改动类型和风险等级。
3. 影响表和字段。
4. 兼容策略。
5. 回滚策略。
6. 上线顺序。
7. 必须人工确认的点。

验收结果