Pengembangan software yang kompleks tidak terlepas dari database yang kompleks pula, terdiri dari beberapa tabel yang berkesinambungan dan memiliki relasi satu sama lain, dalam dokumentasinya mysql di sebutkan seperti ini
By default, MySQL runs with autocommit mode enabled. This means that, when not otherwise inside a transaction, each statement is atomic, as if it were surrounded by
https://dev.mysql.com/doc/refman/8.0/en/commit.htmlSTART TRANSACTION
andCOMMIT
. You cannot useROLLBACK
to undo the effect; however, if an error occurs during statement execution, the statement is rolled back.
secara default mysql berjalan dengan autocommit yang sudah diaktifkan, jadi setiap query akan dijalankan sesuai order namun jika ternyata di tengah tengah proses terjadi sesuatu error, yang mungkin bisa jadi disebabkan oleh terputusnya koneksi user atau karena hal lain, maka query yang sudah tereksekusi di awal tidak akan bisa dilakukan mekanisme rollback, maka dari itu diperlukan mekanisme database transaction, agar setiap rangkaian query yang kita harapkan jika terjadi kesalahan di tengah tengah maka proses dari awal dapat dibatalkan
contoh kasusnya seperti ketika di sebuah eccomerce memiliki setidaknya database skema table seperti users, orders dan juga product seperti dibawah ini
ketika seorang user melakukan checkout sebuah barang maka hal selanjutnya adalah melakukan update terhadap stock product dan juga melakukan pengrangan balance yang dimiliki user kemudian mengirimkan invoice pembayaran kepada user
dari rangkaian proses tersebut, ada kemungkinan ketika user melakukan pembelian kemudian stock sudah terkurangi tetapi karena koneksi user yang bermasalah dan koneksi terputus di tengah proses, balance user tidak terkurangi, untuk menangani hal tersebut di perlukan yang namanya mekanisme database transaction, nah dibawah ini akan saya berikan contoh bagaimana cara menimplementasikannya di bahasa pemrograman PHP.
dari kode tersebut, database transaction dimulai dari query insert order, kemudian dilakukan proses update balance user, jika proses update balance error maka query insert order yang sudah selesai makan akan di rollback dan tidak akan tercatat di database, semua akan tercatat dalam database jika semua proses telah berhasil tanpa ada yang error.