Transaksi database: menjaga perubahan tetap utuh
Kenali commit dan rollback melalui contoh pemindahan stok antar lokasi.
Satu operasi, beberapa perubahan
Memindahkan stok berarti mengurangi jumlah di lokasi asal dan menambah jumlah di tujuan. Jika hanya satu perubahan berhasil, catatan persediaan menjadi tidak konsisten.
START TRANSACTION;
UPDATE inventory SET quantity = quantity - 2
WHERE id = 1 AND quantity >= 2;
-- Aplikasi harus memastikan tepat satu baris berubah.
UPDATE inventory SET quantity = quantity + 2
WHERE id = 2;
-- COMMIT hanya bila kedua perubahan memenuhi aturan.
COMMIT;
Periksa hasil, bukan hanya kesalahan
Query yang mengubah nol baris belum tentu menimbulkan kesalahan SQL. Aplikasi harus memeriksa jumlah baris yang berubah dan menjalankan ROLLBACK jika stok asal kurang atau lokasi tujuan tidak ditemukan.
Gunakan mesin yang mendukung transaksi
Untuk MySQL, tabel InnoDB mendukung transaksi. Pastikan seluruh tabel yang terlibat memakai mesin yang sesuai.
Pertimbangkan konkurensi
Permintaan bersamaan dapat memengaruhi data yang sama. Kunci baris dan urutan pembaruan yang konsisten membantu mengelola perubahan tersebut; aplikasi juga perlu menangani deadlock dengan percobaan ulang yang terbatas.
