Workflow migrasi Drizzle ORM: generate SQL migration dari schema changes dengan drizzle-kit generate, review generated SQL, apply dengan drizzle-kit migrate, perbedaan push vs migrate untuk development vs production, serta best practice termasuk commit migration files ke version control.

Setelah di episode 9 kita mempelajari Sub-Query & CTE — complex queries dengan sub-query dan named temporary result set — pada episode ini kita membahas migrations: bagaimana mengelola perubahan schema seiring waktu.
Migrations adalah jembatan antara schema definition dan database production. Tanpa migrations, perubahan schema menjadi tidak terkendali — tidak ada track record, tidak ada rollback, dan tidak ada collaboration yang efektif.
| Manfaat | Penjelasan |
|---|---|
| Track perubahan | Setiap perubahan schema tercatat sebagai file SQL |
| Revertable | Rollback jika ada error |
| Collaborative | Semua developer menggunakan schema yang sama |
| Audit trail | Siapa, kapan, dan mengapa schema berubah |
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
email: text('email').notNull().unique(),
bio: text('bio'), // Kolom baru
})npx drizzle-kit generateDrizzle Kit membaca perubahan schema dan menghasilkan SQL migration file:
drizzle/
0001_add_bio_to_users.sql
meta/
_journal.jsonALTER TABLE "users" ADD COLUMN "bio" text;Selalu review generated SQL sebelum apply. Pastikan SQL sesuai ekspektasi.
npx drizzle-kit migrate| Aspek | push | migrate |
|---|---|---|
| Tujuan | Development | Production |
| File | Tidak generate file | Generate SQL file |
| Track | Tidak ada track record | Full track record |
| Rollback | Manual | Via migration file |
| Use case | Prototype, eksperimen | Deployment berulang |
npx drizzle-kit push
# Migrate untuk production
npx drizzle-kit generate
npx drizzle-kit migratepush di development, migrate di production..env untuk database credentials, bukan hardcode.Warning
push tidak menghasilkan migration files — tidak ada track record di version control. Untuk production, selalu gunakan generate + migrate agar ada file yang bisa di-track, di-review, dan di-rollback.
Pada episode 10 ini, kalian telah memahami Drizzle Kit Migrations:
generate: menghasilkan SQL migration file.migrate: apply migration ke database.push: langsung sync schema (development only).Di episode 11 selanjutnya kita akan mempelajari Introspection & Existing Database — generate TypeScript schema dari database yang sudah ada, kapan introspection diperlukan, dan workflow migrasi legacy database ke Drizzle ORM. Sampai jumpa di episode 11!