Rumahweb Journal
Banner - Belajar SQL Database bagian 6

Belajar SQL Database Bagian 6: Mengelola Transaksi MySQL

Pada Bagian 5, kita telah belajar tentang relasi antar tabel serta cara menghubungkan data menggunakan Primary Key dan Foreign Key. Di bagian belajar SQL database bagian 6 ini, kita akan melanjutkan ke topik baru yang tak kalah penting dalam pengelolaan database, yaitu transaksi di MySQL.

Fitur transaksi ini membantu kita menjalankan beberapa perintah SQL sekaligus dalam satu proses yang utuh. Jika semua perintah berhasil, maka perubahan disimpan ke database. Namun, jika ada satu saja yang gagal, maka semua perubahan dapat dibatalkan.

Fitur ini sangat penting agar data tetap aman dan konsisten, terutama pada aplikasi yang menangani banyak operasi secara bersamaan, seperti sistem keuangan atau toko online.

 Apa Itu Transaksi di MySQL?

Secara sederhana, transaksi adalah rangkaian proses yang berisi beberapa perintah SQL yang dijalankan secara bersamaan. Contohnya bisa dilihat pada proses restok barang di toko online.

Ketika admin menambahkan stok barang baru, sistem biasanya melakukan dua hal:

  1. Menambah jumlah stok di tabel produk.
  2. Menyimpan riwayat restok ke tabel log_stok.

Kedua langkah ini harus berhasil secara bersamaan. Jika salah satu gagal, misalnya log tidak tersimpan, maka sebaiknya stok juga tidak berubah. Tujuannya agar data tetap konsisten antara jumlah barang dan catatan restoknya.

Pindah Hosting ke Rumahweb Gratis

Dalam MySQL, transaksi dijalankan dengan tiga perintah utama berikut:

  • START TRANSACTION atau BEGIN
  • COMMIT
  • ROLLBACK

Sifat Transaksi (ACID)

Transaksi dalam database memiliki empat sifat utama yang dikenal dengan istilah ACID:

  • Atomicity: Semua operasi harus berhasil semua, atau dibatalkan semua jika ada error.
  • Consistency: Setelah transaksi selesai, data di database harus tetap valid sesuai aturan yang berlaku.
  • Isolation: Transaksi berjalan terpisah dari transaksi lain.
  • Durability: Setelah disimpan (commit), perubahan akan tersimpan permanen walaupun server mengalami gangguan.

Keempat sifat ini memastikan data tetap aman dan tidak rusak walaupun ada error di tengah proses.

Mode Autocommit di MySQL

Secara default, MySQL akan langsung menyimpan setiap perubahan (autocommit aktif). Artinya, setiap kali Anda menjalankan INSERT, UPDATE, atau DELETE, hasilnya langsung tersimpan.

Namun, saat ingin menjalankan beberapa query sekaligus dalam satu proses transaksi, mode autocommit perlu dinonaktifkan dengan perintah berikut:

Mode Autocommit di MySQL

Setelah itu, MySQL tidak akan langsung menyimpan perubahan sampai Anda menjalankan COMMIT.

Perintah Dasar Transaksi di MySQL

Berikut adalah tiga perintah utama untuk mengelola transaksi:

PerintahFungsi
START TRANSACTION / BEGINMemulai transaksi baru
COMMITMenyimpan semua perubahan ke database
ROLLBACKMembatalkan perubahan dan mengembalikan ke kondisi awal

Contoh:

Misalkan Anda memiliki dua tabel seperti berikut pada transaksi restok barang:

Tabel produk :

Contoh Tabel produk

Tabel log_stok:

Contoh tabel log_stok

Ketika admin menambahkan 10 unit Keyboard baru, sistem akan menambah stok sekaligus mencatat log restok.

contoh transaction

Berikut hasilnya:

melihat hasil transaksi database

Jika di tengah proses terjadi error (misalnya query INSERT gagal karena kolom tidak sesuai), Anda bisa membatalkan seluruh transaksi dengan perintah:

rollback

BACA JUGA: Contoh Database Penjualan Barang Berbasis MySQL

Menggunakan SAVEPOINT untuk Rollback Parsial

Dalam beberapa kasus, Anda mungkin tidak ingin membatalkan seluruh transaksi, tapi hanya sebagian saja. Misalnya saat proses restok, stok sudah berhasil ditambah, tapi Anda ingin membatalkan update harga yang salah input. Untuk itu, Anda bisa menggunakan SAVEPOINT.

Menggunakan SAVEPOINT - belajar sql database

Pada contoh di atas, perubahan stok tetap disimpan, tetapi perubahan harga dibatalkan karena Anda melakukan rollback ke SAVEPOINT. Berikut screenshot hasilnya:

Menggunakan rollback SAVEPOINT

Hal yang Perlu Diperhatikan

  • Pastikan tabel menggunakan InnoDB, karena engine MyISAM tidak mendukung transaksi.
  • Beberapa perintah DDL seperti CREATE TABLE atau ALTER TABLE akan otomatis melakukan implicit commit, yang akan mengakhiri transaksi sebelumnya.
  • Hindari transaksi yang terlalu panjang, karena bisa menyebabkan lock pada tabel dan memperlambat query lain.
  • Pastikan setiap transaksi selalu ditutup dengan COMMIT atau ROLLBACK agar koneksi database tidak menggantung.

Tips dan Best Practice

  • Gunakan transaksi untuk operasi penting yang melibatkan banyak query.
  • Buat transaksi sesingkat mungkin untuk menghindari deadlock.
  • Jika menggunakan framework atau ORM, pahami bagaimana mereka menangani transaksi otomatis.
  • Tambahkan logging untuk memantau kapan transaksi gagal atau berhasil di commit.

Penutup

Transaksi di MySQL berfungsi untuk menjaga agar data tetap aman dan konsisten, terutama ketika ada banyak operasi yang dijalankan sekaligus. Dengan memahami cara kerja start transaction, commit, rollback, hingga savepoint, Anda bisa mengelola data dengan lebih aman dan terkontrol.

Fitur ini sangat penting diterapkan pada sistem yang sensitif terhadap data seperti toko online, sistem kasir, hingga aplikasi keuangan.

Demikian tutorial belajar SQL Database bagian ke 6 tentang mengelola transaksi data di MySQL. Ikuti terus belajar SQL database dari Rumahweb untuk meningkatkan kemampuan kelola database Anda. Semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 3 / 5. Vote count: 1

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Kholifatush Sholichah

Kholifatush Sholichah, atau yang akrab disapa Lika adalah bagian dari team Technical Support Rumahweb. Lika suka menulis jurnal tentang WordPress, cara mengatasi berbagai macam error, seperti SSL error, database error, dan masalah teknis lainnya yang sering terjadi pada website. Melalui tulisannya, Lika ingin membantu Anda mengatasi masalah tersebut dengan solusi yang mudah dipahami.

banner pop up - Pindah Hosting ke Rumahweb