mysql transaction commit rollback | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: mysql transaction commit rollback

Thursday, April 9, 2026

mysql transaction commit rollback

🏠 Beranda Tutorial MySQL Artikel 27
🔴 Lanjutan 🗄️ MySQL Transactions ⏱️ 12 Menit Baca 📘 Artikel 27 dari 28

Keamanan Data dengan Transaksi: BEGIN, COMMIT, dan ROLLBACK

Pelajari cara melindungi data toko online-mu dari kejadian tak terduga menggunakan mekanisme transaksi MySQL yang andal dan profesional.

3
Perintah Utama
8
Contoh Query
12
Menit Baca

Bayangkan kamu lagi transfer uang lewat ATM. Uang sudah terpotong dari rekening kamu — eh, tiba-tiba listrik mati. Uang hilang, tapi rekening tujuan nggak nambah. Panik? Nah, di dunia database, skenario kayak gitu bisa terjadi kapan saja kalau kamu nggak pakai transaksi MySQL COMMIT ROLLBACK. Untungnya, MySQL sudah menyediakan mekanisme canggih untuk mencegah bencana data seperti itu.

Di artikel ke-27 dari seri 28 artikel Belajar Query SQL MySQL ini, kita akan bahas tuntas soal transaksi MySQL COMMIT ROLLBACK — tiga perintah ajaib yang jadi tameng keamanan data-mu: BEGIN, COMMIT, dan ROLLBACK. Kita akan praktik langsung dengan studi kasus toko online — mulai dari proses checkout pelanggan, pengurangan stok produk, sampai pembatalan pesanan yang gagal.

Setelah baca artikel ini, kamu akan paham kenapa aplikasi e-commerce profesional selalu menggunakan transaksi, dan bagaimana cara mengimplementasikannya sendiri. Yuk mulai!

💡
FAKTA MENARIK — Tahukah Kamu?

Konsep transaksi database lahir dari penelitian Jim Gray di IBM pada tahun 1970-an, dan beliau meraih Turing Award (hadiah Nobel-nya dunia komputer) pada 1998 atas kontribusi tersebut. Saat ini, hampir 100% platform e-commerce besar — dari Tokopedia hingga Amazon — mengandalkan transaksi database untuk memastikan setiap proses pembayaran berjalan aman tanpa kebocoran data.

1. Apa Itu Transaksi dalam MySQL?

Transaksi adalah sekelompok operasi SQL yang diperlakukan sebagai satu kesatuan utuh. Ibaratnya seperti membeli paket combo di restoran cepat saji — burger, kentang, dan minuman harus datang bareng. Kalau kentangnya habis, kamu nggak mau cuma dapat burger doang, kan? Semua atau tidak sama sekali. Itulah prinsip transaksi: all-or-nothing.

Transaksi MySQL mengikuti prinsip ACID:

Properti Kepanjangan Artinya
A Atomicity Semua operasi berhasil, atau tidak sama sekali
C Consistency Data selalu dalam kondisi valid sebelum & sesudah
I Isolation Transaksi berjalan terisolasi dari transaksi lain
D Durability Perubahan yang di-COMMIT permanen walau server crash
STRUKTUR DASAR TRANSAKSI MYSQL
BEGIN;                    -- Mulai blok transaksi

INSERT INTO pesanan ...  -- Operasi 1
UPDATE produk SET ...     -- Operasi 2
UPDATE pelanggan SET ... -- Operasi 3

COMMIT;                 -- Simpan semua perubahan
-- ATAU --
ROLLBACK;               -- Batalkan semua perubahan
✅ TIP PRAKTIS

Transaksi hanya bekerja pada tabel dengan storage engine InnoDB. Cek dengan perintah SHOW CREATE TABLE nama_tabel; dan pastikan tertulis ENGINE=InnoDB. MyISAM tidak mendukung transaksi!

2. BEGIN dan COMMIT: Membungkus Operasi dengan Aman

Dalam transaksi MySQL COMMIT ROLLBACK, perintah BEGIN membuka "amplop" operasi, dan COMMIT menyegelnya. Analogi sederhananya: kamu nulis draf pesan, baru dikirim kalau semuanya oke.

Studi Kasus: Pelanggan Budi memesan 2 buah Headphone Bluetooth. Kita perlu:

  1. Memasukkan data pesanan baru ke tabel pesanan
  2. Mengurangi stok produk di tabel produk
  3. Mencatat poin reward ke tabel pelanggan
CONTOH: PROSES CHECKOUT DENGAN BEGIN & COMMIT
-- Mulai transaksi checkout
BEGIN;

-- Langkah 1: Tambah pesanan baru
INSERT INTO pesanan (id_pelanggan, id_produk, jumlah, total_harga, status)
VALUES (1, 5, 2, 1199800, 'diproses');

-- Langkah 2: Kurangi stok produk
UPDATE produk
SET stok = stok - 2
WHERE id_produk = 5;

-- Langkah 3: Tambah poin reward pelanggan
UPDATE pelanggan
SET poin = poin + 120
WHERE id_pelanggan = 1;

-- Semua berhasil? Simpan permanen!
COMMIT;

📊 Kondisi tabel setelah COMMIT berhasil:

Tabel Kolom Berubah Nilai Sebelum Nilai Sesudah
pesanan status diproses
produk stok 50 48
pelanggan poin 380 500

3. ROLLBACK: Tombol "Undo" untuk Database-mu

ROLLBACK adalah penyelamat saat sesuatu berjalan tidak sesuai rencana. Bayangkan kamu lagi memasak, tiba-tiba sadar ada bumbu yang salah takar — kamu buang dan mulai lagi. ROLLBACK melakukan hal yang sama: membatalkan semua perubahan yang belum di-COMMIT.

Studi Kasus: Pelanggan Sari mau beli produk, tapi di tengah proses ternyata stoknya habis (stok = 0). Transaksi harus dibatalkan!

CONTOH: ROLLBACK SAAT STOK HABIS
BEGIN;

-- Cek stok terlebih dahulu
SELECT stok FROM produk WHERE id_produk = 3;
-- Hasil: stok = 0 (HABIS!)

-- Upaya insert pesanan tetap dilakukan (simulasi)
INSERT INTO pesanan (id_pelanggan, id_produk, jumlah, total_harga, status)
VALUES (2, 3, 1, 459900, 'diproses');

-- Deteksi stok habis — batalkan semuanya!
ROLLBACK;

-- Data kembali seperti semula, pesanan batal

📊 Kondisi tabel setelah ROLLBACK:

Tabel Operasi Dicoba Status
pesanan INSERT data pesanan baru ❌ Dibatalkan
produk Stok tidak berubah ✅ Aman (tetap 0)
⚠️ PERINGATAN PENTING

ROLLBACK tidak bisa membatalkan pernyataan DDL seperti CREATE TABLE, DROP TABLE, atau ALTER TABLE. Perintah-perintah DDL secara otomatis melakukan COMMIT implisit!

4. SAVEPOINT: Titik Aman di Tengah Transaksi

SAVEPOINT adalah fitur lanjutan dari transaksi MySQL yang memungkinkan kamu membuat "checkpoint" di tengah transaksi. Ibarat bermain game — kamu bisa save progress di titik tertentu, dan kalau mati, balik ke titik save itu, bukan dari awal.

CONTOH: SAVEPOINT DALAM TRANSAKSI
BEGIN;

-- Tambah pesanan
INSERT INTO pesanan (id_pelanggan, id_produk, jumlah, total_harga, status)
VALUES (3, 7, 1, 850000, 'diproses');

-- Buat checkpoint setelah insert pesanan
SAVEPOINT setelah_pesanan;

-- Coba proses pembayaran
UPDATE pelanggan
SET saldo = saldo - 850000
WHERE id_pelanggan = 3;
-- Ternyata saldo tidak cukup!

-- Rollback ke checkpoint, bukan ke awal
ROLLBACK TO SAVEPOINT setelah_pesanan;

-- Lanjutkan dengan metode pembayaran lain
UPDATE pelanggan
SET metode_bayar = 'COD'
WHERE id_pelanggan = 3;

COMMIT;
✅ TIP PRAKTIS — SAVEPOINT

Gunakan RELEASE SAVEPOINT nama_savepoint; untuk menghapus checkpoint yang sudah tidak dibutuhkan. Ini membebaskan memori yang digunakan MySQL untuk menyimpan informasi savepoint tersebut.

📋 Formula & Sintaks Lengkap Transaksi MySQL

Referensi Cepat — Semua Perintah Transaksi
BEGIN;
START TRANSACTION;          -- alternatif BEGIN

COMMIT;                      -- simpan semua perubahan

ROLLBACK;                    -- batalkan semua perubahan

SAVEPOINT nama_titik;         -- buat checkpoint
ROLLBACK TO SAVEPOINT nama;  -- balik ke checkpoint tertentu
RELEASE SAVEPOINT nama;      -- hapus checkpoint

SET autocommit = 0;           -- matikan auto-commit
SET autocommit = 1;           -- aktifkan auto-commit (default)

🚀 Step-by-Step: Praktikum Transaksi MySQL dari Nol

1
Siapkan Database & Tabel

Buat database toko online dengan tiga tabel utama. Pastikan menggunakan engine InnoDB.

CREATE DATABASE toko_online;
USE toko_online;

CREATE TABLE produk (
  id_produk INT PRIMARY KEY AUTO_INCREMENT,
  nama_produk VARCHAR(100),
  harga DECIMAL(10,2),
  stok INT
) ENGINE=InnoDB;
2
Isi Data Awal (INSERT Sampel)

Masukkan beberapa data produk dan pelanggan untuk simulasi transaksi.

INSERT INTO produk (nama_produk, harga, stok)
VALUES
  ('Headphone Bluetooth', 599900, 50),
  ('Smartwatch X200', 850000, 15),
  ('Kabel Data USB-C', 45000, 0);
3
Jalankan Transaksi Sukses (COMMIT)

Coba transaksi lengkap dengan COMMIT dan verifikasi hasilnya.

BEGIN;
UPDATE produk SET stok = stok - 1 WHERE id_produk = 1;
COMMIT;
-- Cek hasilnya:
SELECT * FROM produk;
4
Uji Coba ROLLBACK

Buka dua koneksi MySQL berbeda (dua tab terminal), lakukan transaksi di satu sisi dan lihat isolasinya dari sisi lain.

BEGIN;
UPDATE produk SET stok = 999 WHERE id_produk = 2;
-- Di koneksi lain: SELECT tidak melihat perubahan ini!
ROLLBACK;
-- Stok kembali ke nilai semula

📊 Tabel Perbandingan: COMMIT vs ROLLBACK vs SAVEPOINT

Aspek COMMIT ROLLBACK SAVEPOINT
Fungsi Menyimpan perubahan Membatalkan perubahan Membuat titik aman
Data permanen? ⏸️
Akhiri transaksi? Ya Ya Tidak
Rollback parsial? Tidak Tidak Ya ✅
Kapan digunakan Semua berhasil Ada error fatal Transaksi kompleks
Analogi "Kirim" email "Hapus" draft "Save" di game
🎯
TIPS DARI LAPANGAN #1 — Selalu Gunakan Error Handling

Di aplikasi nyata, kamu tidak bisa manual ROLLBACK setiap ada error. Gunakan DECLARE ... HANDLER di stored procedure MySQL untuk otomatis ROLLBACK jika terjadi exception. Ini standar praktek di proyek production level!

💡
INSIGHT TRAINER #2 — Jaga Transaksi Tetap Singkat

Transaksi yang terlalu lama = lock terlalu lama = performa database melambat. Di e-commerce yang sibuk, ini bisa menyebabkan antrian panjang. Prinsipnya: "Do it fast, commit or rollback, then release." Hindari logika bisnis yang panjang di dalam blok transaksi.

🎓 Kesimpulan

Setelah artikel ke-27 ini, kamu sudah menguasai cara kerja transaksi MySQL COMMIT ROLLBACK — fondasi keamanan data di setiap aplikasi profesional. Ini bukan sekedar perintah SQL biasa; ini adalah prinsip rekayasa perangkat lunak yang digunakan oleh jutaan sistem di seluruh dunia.

  • BEGIN / START TRANSACTION — membuka blok transaksi yang terisolasi
  • COMMIT — menyimpan semua perubahan secara permanen ke database
  • ROLLBACK — membatalkan semua perubahan dan kembali ke kondisi awal
  • SAVEPOINT — membuat checkpoint untuk rollback parsial yang fleksibel
  • Transaksi hanya bekerja pada storage engine InnoDB
  • DDL commands (CREATE, DROP, ALTER) tidak bisa di-rollback
  • Selalu gunakan error handling agar ROLLBACK otomatis saat error
  • Jaga transaksi sesingkat mungkin untuk performa optimal

"Menulis query tanpa transaksi ibarat menyimpan dokumen penting tanpa Ctrl+S — berisiko dan tidak profesional. Sekarang kamu sudah tahu caranya. Implementasikan mulai dari proyek berikutnya!"

💬 Punya pertanyaan tentang transaksi MySQL? Yuk diskusi di kolom komentar!

Jangan lupa share artikel ini ke teman-teman yang lagi belajar database, dan bookmark seri ini agar mudah ditemukan lagi. Satu artikel lagi sebelum seri ini selesai — jangan sampai ketinggalan! 🚀


📚
Navigasi Seri Artikel · MySQL Mastery
← Artikel Sebelumnya

Artikel 26/28: CREATE INDEX — Mempercepat Query MySQL

Membuat indeks untuk mempercepat pencarian query di tabel besar — kritis untuk performa aplikasi.

Artikel Selanjutnya →

Artikel 28/28: Studi Kasus — Merancang & Query Database Mini 🏆

Puncak seri! Wujudkan semua ilmu MySQL dalam satu project toko online nyata dari desain tabel hingga query laporan.

Artikel 27 dari 28 dalam seri ini 96% selesai
#MySQL #SQL #Database #Query #Tutorial #transaksiMySQLCOMMITROLLBACK #BelajarSQL

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux