# 回滚策略

## 回滚原则

1. **每个 UP 必须有对应的 DOWN**
2. **DOWN 必须经过测试**
3. **不可逆操作需要备份**

## 可回滚操作

| 操作 | 回滚方式 |
|:---|:---|
| CREATE TABLE | DROP TABLE |
| ADD COLUMN | DROP COLUMN |
| CREATE INDEX | DROP INDEX |
| INSERT | DELETE |

## 不可逆操作（需特殊处理）

| 操作 | 处理方式 |
|:---|:---|
| DROP TABLE | 迁移前备份表数据 |
| DROP COLUMN | 迁移前备份列数据 |
| TRUNCATE | 迁移前全表备份 |
| 类型变更（缩小） | 验证数据是否超限 |

## 回滚流程

1. 确认回滚范围
2. 备份当前数据（如需要）
3. 执行 DOWN 脚本
4. 验证回滚结果
5. 通知相关方

## 紧急回滚

```bash
# 回滚最近一次迁移
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -f migrations/XXXXXX_xxx_down.sql

# 验证
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "\d table_name"
```
