{"id":58648,"date":"2025-10-28T15:14:32","date_gmt":"2025-10-28T08:14:32","guid":{"rendered":"https:\/\/www.rumahweb.com\/journal\/?p=58648"},"modified":"2026-02-16T10:11:11","modified_gmt":"2026-02-16T03:11:11","slug":"belajar-sql-database-6","status":"publish","type":"post","link":"https:\/\/www.rumahweb.com\/journal\/belajar-sql-database-6\/","title":{"rendered":"Belajar SQL Database Bagian 6: Mengelola Transaksi MySQL"},"content":{"rendered":"\n<p>Pada <a href=\"https:\/\/www.rumahweb.com\/journal\/belajar-sql-database-5\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Bagian 5<\/a>, kita telah belajar tentang relasi antar tabel serta cara menghubungkan data menggunakan <em>Primary Key<\/em> dan <em>Foreign Key<\/em>. 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.<\/p>\n\n\n\n<p>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. <\/p>\n\n\n\n<p>Fitur ini sangat penting agar data tetap aman dan konsisten, terutama pada aplikasi yang menangani banyak operasi secara bersamaan, seperti sistem keuangan atau toko <em>online<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;Apa Itu Transaksi di MySQL?<\/h2>\n\n\n\n<p>Secara sederhana, transaksi adalah rangkaian proses yang berisi beberapa perintah SQL yang dijalankan secara bersamaan. Contohnya bisa dilihat pada proses restok barang di toko <em>online<\/em>.<\/p>\n\n\n\n<p>Ketika admin menambahkan stok barang baru, sistem biasanya melakukan dua hal:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Menambah jumlah stok di tabel produk.<\/li>\n\n\n\n<li>Menyimpan riwayat restok ke tabel log_stok.<\/li>\n<\/ol>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Dalam MySQL, transaksi dijalankan dengan tiga perintah utama berikut:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>START TRANSACTION atau BEGIN<\/li>\n\n\n\n<li>COMMIT<\/li>\n\n\n\n<li>ROLLBACK<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sifat Transaksi (ACID)<\/h2>\n\n\n\n<p>Transaksi dalam database memiliki empat sifat utama yang dikenal dengan istilah ACID:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>Atomicity<\/em><\/strong>: Semua operasi harus berhasil semua, atau dibatalkan semua jika ada error.<\/li>\n\n\n\n<li><strong><em>Consistency<\/em><\/strong>: Setelah transaksi selesai, data di database harus tetap valid sesuai aturan yang berlaku.<\/li>\n\n\n\n<li><strong><em>Isolation<\/em><\/strong>: Transaksi berjalan terpisah dari transaksi lain.<\/li>\n\n\n\n<li><strong><em>Durability<\/em><\/strong>: Setelah disimpan (<em>commit<\/em>), perubahan akan tersimpan permanen walaupun server mengalami gangguan.<\/li>\n<\/ul>\n\n\n\n<p>Keempat sifat ini memastikan data tetap aman dan tidak rusak walaupun ada <em>error <\/em>di tengah proses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mode Autocommit di MySQL<\/h2>\n\n\n\n<p>Secara <em>default<\/em>, MySQL akan langsung menyimpan setiap perubahan (<em>autocommit <\/em>aktif). Artinya, setiap kali Anda menjalankan <code>INSERT<\/code>, <code>UPDATE<\/code>, atau <code>DELETE<\/code>, hasilnya langsung tersimpan.<\/p>\n\n\n\n<p>Namun, saat ingin menjalankan beberapa query sekaligus dalam satu proses transaksi, mode <em>autocommit <\/em>perlu dinonaktifkan dengan perintah berikut:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86.png\"><img loading=\"lazy\" decoding=\"async\" width=\"442\" height=\"34\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86.png\" alt=\"Mode Autocommit di MySQL\" class=\"wp-image-58707\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86.png 442w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86-300x23.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86-370x28.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86-270x21.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-86-435x34.png 435w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><\/a><\/figure>\n\n\n\n<p>Setelah itu, MySQL tidak akan langsung menyimpan perubahan sampai Anda menjalankan COMMIT.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perintah Dasar Transaksi di MySQL<\/h2>\n\n\n\n<p>Berikut adalah tiga perintah utama untuk mengelola transaksi:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Perintah<\/strong><\/td><td><strong>Fungsi<\/strong><\/td><\/tr><tr><td>START TRANSACTION \/ BEGIN<\/td><td>Memulai transaksi baru<\/td><\/tr><tr><td>COMMIT<\/td><td>Menyimpan semua perubahan ke database<\/td><\/tr><tr><td>ROLLBACK<\/td><td>Membatalkan perubahan dan mengembalikan ke kondisi awal<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<p>Misalkan Anda memiliki dua tabel seperti berikut pada transaksi restok barang:<\/p>\n\n\n\n<p>Tabel produk :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84.png\"><img loading=\"lazy\" decoding=\"async\" width=\"531\" height=\"114\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84.png\" alt=\"Contoh Tabel produk\" class=\"wp-image-58705\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84.png 531w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84-300x64.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84-370x79.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-84-270x58.png 270w\" sizes=\"auto, (max-width: 531px) 100vw, 531px\" \/><\/a><\/figure>\n\n\n\n<p>Tabel log_stok:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85.png\"><img loading=\"lazy\" decoding=\"async\" width=\"664\" height=\"137\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85.png\" alt=\"Contoh tabel log_stok\" class=\"wp-image-58706\" style=\"width:533px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85.png 664w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85-300x62.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85-370x76.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85-270x56.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-85-570x118.png 570w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/a><\/figure>\n\n\n\n<p>Ketika admin menambahkan 10 unit Keyboard<strong> <\/strong>baru, sistem akan menambah stok sekaligus mencatat log restok.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76.png\"><img loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"287\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76.png\" alt=\"contoh transaction\" class=\"wp-image-58696\" style=\"width:443px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76.png 471w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76-300x183.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76-370x225.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-76-270x165.png 270w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/a><\/figure>\n\n\n\n<p>Berikut hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83.png\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"228\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83.png\" alt=\"melihat hasil transaksi database\" class=\"wp-image-58703\" style=\"width:445px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83.png 570w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83-300x120.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83-370x148.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-83-270x108.png 270w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/figure>\n\n\n\n<p>Jika di tengah proses terjadi error (misalnya query <code>INSERT<\/code> gagal karena kolom tidak sesuai), Anda bisa membatalkan seluruh transaksi dengan perintah:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79.png\"><img loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"46\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79.png\" alt=\"rollback\" class=\"wp-image-58699\" style=\"width:444px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79.png 458w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79-300x30.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79-370x37.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-79-270x27.png 270w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/a><\/figure>\n\n\n\n<p><strong>BACA JUGA<\/strong>: <a href=\"https:\/\/blog.rumahweb.com\/contoh-database-penjualan\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Contoh Database Penjualan Barang Berbasis MySQL<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Menggunakan SAVEPOINT untuk Rollback Parsial<\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80.png\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"553\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80.png\" alt=\"Menggunakan SAVEPOINT - belajar sql database\" class=\"wp-image-58700\" style=\"width:450px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80.png 621w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80-300x267.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80-370x329.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80-270x240.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-80-570x508.png 570w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/a><\/figure>\n\n\n\n<p>Pada contoh di atas, perubahan stok tetap disimpan, tetapi perubahan harga dibatalkan karena Anda melakukan rollback ke SAVEPOINT. Berikut screenshot hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82.png\"><img loading=\"lazy\" decoding=\"async\" width=\"581\" height=\"111\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82.png\" alt=\"Menggunakan rollback SAVEPOINT\" class=\"wp-image-58702\" style=\"width:460px;height:auto\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82.png 581w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82-300x57.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82-370x71.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82-270x52.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/image-82-570x109.png 570w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Hal yang Perlu Diperhatikan<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pastikan tabel menggunakan <strong>InnoDB<\/strong>, karena engine MyISAM tidak mendukung transaksi.<\/li>\n\n\n\n<li>Beberapa perintah DDL seperti CREATE TABLE atau ALTER TABLE akan otomatis melakukan <strong>implicit commit<\/strong>, yang akan mengakhiri transaksi sebelumnya.<\/li>\n\n\n\n<li>Hindari transaksi yang terlalu panjang, karena bisa menyebabkan <strong>lock<\/strong> pada tabel dan memperlambat query lain.<\/li>\n\n\n\n<li>Pastikan setiap transaksi selalu ditutup dengan COMMIT atau ROLLBACK agar koneksi database tidak menggantung.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Tips dan <em>Best Practice<\/em><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gunakan transaksi untuk operasi penting yang melibatkan banyak query.<\/li>\n\n\n\n<li>Buat transaksi sesingkat mungkin untuk menghindari <strong><em>deadlock<\/em><\/strong>.<\/li>\n\n\n\n<li>Jika menggunakan <em>framework <\/em>atau ORM, pahami bagaimana mereka menangani transaksi otomatis.<\/li>\n\n\n\n<li>Tambahkan <strong>logging<\/strong> untuk memantau kapan transaksi gagal atau berhasil di <em>commit<\/em>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Penutup<\/strong><\/h2>\n\n\n\n<p>Transaksi di MySQL berfungsi untuk menjaga agar data tetap aman dan konsisten, terutama ketika ada banyak operasi yang dijalankan sekaligus. Dengan memahami cara kerja <em>start transaction<\/em>, <em>commit<\/em>, <em>rollback<\/em>, hingga <em>savepoint<\/em>, Anda bisa mengelola data dengan lebih aman dan terkontrol. <\/p>\n\n\n\n<p>Fitur ini sangat penting diterapkan pada sistem yang sensitif terhadap data seperti toko online, sistem kasir, hingga aplikasi keuangan.<\/p>\n\n\n\n<p>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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":358,"featured_media":58785,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2294],"tags":[2133,135,134,1440],"class_list":{"0":"post-58648","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-database","8":"tag-belajar-sql","9":"tag-database","10":"tag-mysql","11":"tag-sql"},"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Banner-Belajar-SQL-Database-bagian-6.png","jetpack_shortlink":"https:\/\/wp.me\/p8n3G7-ffW","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/users\/358"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/comments?post=58648"}],"version-history":[{"count":12,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58648\/revisions"}],"predecessor-version":[{"id":61809,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58648\/revisions\/61809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media\/58785"}],"wp:attachment":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media?parent=58648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/categories?post=58648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/tags?post=58648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}