实战:让 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 直接连接生产数据库。
- 不把真实用户数据贴进对话。
- 不执行没有 WHERE 的 UPDATE/DELETE。
- 不删除字段或表,除非有明确迁移和回滚方案。
- 不在一个任务里同时改数据库、接口、前端和权限。
- 不把“写 SQL 草案”和“执行 SQL”混为一谈。
如果 CC 输出了可执行 SQL,也要先当作草案处理。数据库任务的最终执行权不应该交给聊天结果。
评审结论模板
请输出数据库改动评审结论。 格式: 1. 是否建议继续:是 / 否 / 需要补充信息。 2. 改动类型和风险等级。 3. 影响表和字段。 4. 兼容策略。 5. 回滚策略。 6. 上线顺序。 7. 必须人工确认的点。
验收结果
- 你知道数据库改动前要先只读评审。
- 你知道要确认迁移体系、影响范围和回滚方案。
- 你知道不要让 CC 直接执行生产 SQL。
- 你知道数据库任务必须有人确认环境、备份和上线顺序。