コード生成中級
Drizzle/sqlc マイグレーションの自動生成
スキーマ変更の要件から Drizzle / Atlas / sqlc 用のマイグレーション SQL を生成するプロンプト。
監修: 平原尚樹
株式会社BlueAI 代表取締役CEO / ソフトウェアエンジニア / プロダクトエンジニア / Google Cloud Architect / 元AIスタートアップ(Doorkel)
監修: 酒井歩乃加
早稲田大学文化構想学部卒業 / フリーランス編集者・ライター / 元マイベスト編集ディレクター / SEO対策記事・取材記事執筆
こんな課題を解決
テーブル追加やカラム変更のたびに、命名規則と既存スキーマの整合性を確認するのが面倒。ロールバック手順まで含めて自動で作りたい。
プロンプト
Claude Code に入力
次のスキーマ変更に必要なマイグレーションを生成してください。
## 変更内容
- テーブル: invoices に payment_method (enum) と discount_amount (integer) を追加
- payment_method の値は bank_transfer / credit_card / convenience_store
- discount_amount は NOT NULL DEFAULT 0
- 既存行への影響を最小化(ALTER TABLE のロック時間も考慮)
## 出力してほしいもの
1. packages/db/src/schema.ts への TypeScript 定義追加
2. apps/api-go/migrations/{timestamp}_add_invoice_payment.sql (Atlas 形式)
3. ロールバック用の DOWN マイグレーション
4. sqlc が拾えるよう sql/queries/*.sql の更新案
5. 既存データへの backfill が必要なら別ファイルで提示
## 命名・規約
- スネークケース
- インデックスは org_id を必ず先頭に複合キーへ含める
- 既存の命名パターン(プロダクト prefix)に従う実行結果の例
Claude Code が以下を生成します。 - packages/db/src/schema.ts に invoicePaymentMethodEnum 追加 - migrations/20260519120000_add_invoice_payment.sql(ALTER TABLE 4 行) - ロールバック SQL(カラム DROP) - sql/queries/invoices.sql に SetPaymentMethod クエリ追加
コツ・ポイント
- 既存テーブルへの ALTER は本番行数を Claude に伝えると影響評価が正確になる
- Atlas を使うなら migrate diff で再生成し直すのが安全
- enum はアプリ側の型と zod スキーマも同時更新するよう指示する
- backfill が必要な変更は別マイグレーションに分けるのが鉄則