Study
SQL

Transaction: COMMIT & ROLLBACK

Penjelasan

Transaction mengelompokkan beberapa perintah SQL jadi satu unit kerja yang bersifat atomik — semua berhasil bersama-sama, atau semua dibatalkan bersama-sama. Ini penting untuk operasi yang melibatkan beberapa perubahan sekaligus, misalnya transfer saldo: kurangi saldo pengirim DAN tambah saldo penerima harus terjadi bersamaan, tidak boleh salah satu saja yang berhasil. `BEGIN`/`START TRANSACTION` memulai transaction, `COMMIT` menyimpan semua perubahan secara permanen, `ROLLBACK` membatalkan semua perubahan sejak transaction dimulai (misalnya kalau terjadi error di tengah jalan).

Contoh Konsep

START TRANSACTION;

UPDATE accounts SET balance = balance - 100000 WHERE id = 1; -- pengirim
UPDATE accounts SET balance = balance + 100000 WHERE id = 2; -- penerima

-- Kalau kedua UPDATE berhasil, simpan permanen
COMMIT;

-- Kalau ada yang gagal (misal saldo pengirim jadi negatif), batalkan semua
-- ROLLBACK;

Praktikum

Tulis transaction untuk memindahkan 1 stock dari product_id 1 ke product_id 2 di tabel 'products' (kurangi stock produk 1, tambah stock produk 2), lalu COMMIT.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Laravel membungkus pola ini dengan `DB::transaction(function () { ... })` — kalau ada Exception di dalam closure, ROLLBACK terjadi otomatis, kalau tidak ada error, COMMIT terjadi otomatis di akhir.