Transaksi memastikan serangkaian operasi database berhasil SEMUA atau GAGAL SEMUA — tidak ada setengah-setengah.
Contoh masalah tanpa transaksi: Transfer uang dari akun A ke akun B:
- Kurangi saldo A → ✅ berhasil
- Tambah saldo B → ❌ error! Server crash!
Hasilnya: uang hilang dari A tapi tidak masuk ke B!
Solusi: Transaksi
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100000 WHERE id = 1;
UPDATE accounts SET balance = balance + 100000 WHERE id = 2;
COMMIT; -- Simpan perubahan (kedua operasi berhasil)
Jika ada error:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100000 WHERE id = 1;
-- Terjadi error di sini!
ROLLBACK; -- Batalkan semua perubahan (saldo A kembali seperti semula)
ACID properties:
- Atomicity — semua atau tidak sama sekali
- Consistency — data selalu valid setelah transaksi
- Isolation — transaksi bersamaan tidak saling ganggu
- Durability — data yang di-commit tidak hilang