如何Automate DB Migrations:Claude Code 实战指南
学习如何automate db migrations:Claude Code 实战. 包含实用代码示例和分步指导。
DB迁移の悩みを通过 Claude Code解決
Schema更改のたびに迁移文件を手書きするのは手間がかかり、ミスも起きやすい作業です。借助 Claude Code,Schemaの设计更改から迁移生成、种子数据数据の更新まで一気に支持可以。
Prismaでの迁移
Schema设计から迁移実行まで
> PrismaSchemaに以下表格添加、迁移を生成・適用して。
>
> 表格: Order
> - id: UUID, 主キー
> - userId: User への外部キー
> - items: OrderItem[] (1対多)
> - totalAmount: Decimal
> - status: enum (pending, confirmed, shipped, delivered, cancelled)
> - createdAt, updatedAt
Claude Code 生成するSchemaの例です。
enum OrderStatus {
pending
confirmed
shipped
delivered
cancelled
}
model Order {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
items OrderItem[]
totalAmount Decimal @db.Decimal(10, 2)
status OrderStatus @default(pending)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
@@index([status])
}
model OrderItem {
id String @id @default(uuid())
orderId String
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
productId String
quantity Int
price Decimal @db.Decimal(10, 2)
}
那个後、Claude Code 自動で迁移コマンドを実行します。
npx prisma migrate dev --name add_order_tables
Drizzleでの迁移
Drizzle ORM使用場合も同様に指示可以。
> Drizzle ORMのSchemaにOrder表格添加。
> 迁移文件も生成して。
import { pgTable, uuid, decimal, timestamp, pgEnum } from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
import { users } from "./users";
export const orderStatusEnum = pgEnum("order_status", [
"pending", "confirmed", "shipped", "delivered", "cancelled",
]);
export const orders = pgTable("orders", {
id: uuid("id").defaultRandom().primaryKey(),
userId: uuid("user_id").notNull().references(() => users.id),
totalAmount: decimal("total_amount", { precision: 10, scale: 2 }).notNull(),
status: orderStatusEnum("status").default("pending").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const ordersRelations = relations(orders, ({ one, many }) => ({
user: one(users, { fields: [orders.userId], references: [users.id] }),
items: many(orderItems),
}));
既存Schemaの更改
カラム添加やリネームなど、既存表格の更改も安全に処理可以。
> users 表格に以下更改を加えて。
> - phoneNumber カラムを添加(nullable)
> - name を firstName と lastName に分割
> - 既存数据の移行ロジックも含めて
Claude Code 数据移行スクリプト付きの迁移を生成します。
-- マイグレーション: split_user_name
ALTER TABLE "users" ADD COLUMN "first_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "last_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "phone_number" VARCHAR(20);
-- 既存データの移行
UPDATE "users"
SET
"first_name" = split_part("name", ' ', 1),
"last_name" = CASE
WHEN array_length(string_to_array("name", ' '), 1) > 1
THEN split_part("name", ' ', 2)
ELSE ''
END;
ALTER TABLE "users" ALTER COLUMN "first_name" SET NOT NULL;
ALTER TABLE "users" ALTER COLUMN "last_name" SET NOT NULL;
ALTER TABLE "users" DROP COLUMN "name";
种子数据数据の生成
开发用の测试数据も合わせて作れます。
> Order 表格の种子数据数据を20件创建して。
> 每个ステータスが均等に分布するように。
> リアルなダミー数据にして。
迁移の安全性を确认
> 現在の迁移履歴を确认して、
> 本番適用前に問題がないかチェックして。
> 尤其数据消失リスクのある更改を指摘して。
API开发でのDB联动パターン相关内容请参阅API开发を高速化する方法で解説しています。此外、CLAUDE.mdに数据库関連のルールを書いておくと安全性が向上します。書き方のコツはCLAUDE.mdの書き方完全指南。
总结
借助 Claude Code,DBSchemaの设计から更改、迁移生成、种子数据数据创建まで一貫して自动化可以。尤其数据移行ロジックを含む複雑な迁移で威力を発揮します。
Prismaの詳しい使い方はPrisma官方文档、Claude Codeの機能相关内容请参阅Anthropic官方文档。
#Claude Code
#database
#migration
#Prisma
#Drizzle
Related Posts
Use Cases
Use Cases
用 Claude Code 加速个人项目开发【附实战案例】
详解如何用 Claude Code 大幅提升个人项目的开发速度。包含从创意到上线的完整实战案例和工作流。
Use Cases
Use Cases
如何用 Claude Code 自动化代码重构
详解如何利用 Claude Code 高效完成代码重构自动化。包含实用提示词和真实项目中的重构模式。
Use Cases
Use Cases
Complete CORS Configuration Guide:Claude Code 实战指南
了解complete cors configuration guide:Claude Code 实战. 包含实用技巧和代码示例。