Migrasi adalah cara mengelola perubahan skema database secara terstruktur — seperti version control untuk database.
ALTER TABLE — mengubah tabel yang sudah ada:
-- Tambah kolom baru
ALTER TABLE users ADD COLUMN phone TEXT;
-- Rename kolom (SQLite 3.25+)
ALTER TABLE users RENAME COLUMN phone TO phone_number;
-- Rename tabel
ALTER TABLE users RENAME TO members;
Catatan SQLite: SQLite tidak mendukung DROP COLUMN dan beberapa ALTER lainnya. Untuk perubahan besar, buat tabel baru, copy data, lalu hapus tabel lama.
Pola migrasi aman:
-- 1. Buat tabel baru dengan skema yang diinginkan
CREATE TABLE users_new (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
phone TEXT, -- kolom baru
created_at TEXT DEFAULT (datetime('now'))
);
-- 2. Copy data dari tabel lama
INSERT INTO users_new (id, name, email)
SELECT id, name, email FROM users;
-- 3. Hapus tabel lama
DROP TABLE users;
-- 4. Rename tabel baru
ALTER TABLE users_new RENAME TO users;
-- 5. Buat ulang index
CREATE INDEX idx_users_email ON users(email);
Tips migrasi:
- Selalu backup sebelum migrasi
- Gunakan transaksi untuk migrasi
- Test di environment staging dulu
- Framework seperti Laravel mengotomasi ini dengan migration files