Share

Transactions adalah sekelompok operasi sekuensial untuk memanipulasi data dalam  database, yang dilakukan seolah-olah merupakan satu unit kerja tunggal. Dengan kata lain, transations akan berhasil jika setiap operasi individu dalam grup juga berhasil. Jika salah satu operasi dalam transations gagal, seluruh transations akan gagal.

Sebuah transations dimulai dengan pernyataan SQL executable. Sebuah transations berakhir saat commit atau rolled back, baik secara eksplisit dengan pernyataan COMMIT atau ROLLBACK atau secara implisit ketika DDL (Data Definition Language) digunakan untuk mengelola struktur tabel dan indeks dengan pernyataan CREATE, ALTER, RENAME, DROP dan TRUNCATE.

Transactions memiliki empat sifat standar berikut, biasanya disebut dengan akronim ACID :

  1. Atomicity : memastikan bahwa semua operasi di dalam unit kerja selesai dengan sukses. Jika tidak, maka transaction akan dibatalkan pada pada titik kegagalan kemudian operasi sebelumnya dikembalikan ke keadaan semula.
  2. Consistency : memastikan bahwa database benar-benar mengubah keadaan pada transactions yang berhasil dilakukan.
  3. Isolation : memungkinkan transactions beroperasi secara independen dan transparan satu sama lain.
  4. Durability : memastikan bahwa hasil atau akibat dari transactions yang dilakukan tetap dijalankan meski terjadi kegagalan sistem.

COMMIT and ROLLBACK

Bila transactions telah berhasil, maka perintah COMMIT harus dieksekusi sehingga perubahan pada semua tabel yang terlibat akan mulai berlaku. Jika terjadi kegagalan, perintah ROLLBACK harus dieksekusi untuk mengembalikan setiap tabel yang mengacu dalam transactions ke keadaan sebelumnya.

Kita dapat mengontrol transactions dengan menetapkan variabel sesi yang disebut AUTOCOMMIT. Jika AUTOCOMMIT di-set ke 1 (default), maka setiap pernyataan SQL (dalam transaksi atau tidak) dianggap sebagai transaction yang lengkap dan dilakukan secara default ketika selesai dijalankan.

Ketika AUTOCOMMIT di-set ke 0, dengan mengeluarkan perintah SET AUTOCOMMIT = 0, rangkaian pernyataan berikutnya bertindak seperti sebuah transaction dan tidak ada aktivitas yang dilakukan sampai pernyataan COMMIT secara eksplisit dijalankan kembali.

Contoh penerapan transactions

Transaksi perbankan, umpamanya transfer Rp. 100.000 antar dua akun bank. Untuk menyimpan uang ke dalam satu akun, kita harus terlebih dahulu mengambil uang dari rekening lain. Tanpa menggunakan transaction, kita harus menulis pernyataan SQL yang melakukan hal berikut:

  1. Periksa apakah saldo akun pertama lebih besar dari Rp. 100.000.
  2. Kurangi Rp. 100.000 dari akun pertama.
  3. Tambahkan Rp. 100.000 ke akun kedua.

Selain itu, kita harus menulis kode untuk pengecekan kesalahan dalam program kita, khususnya untuk menghentikan operasi jika akun pertama tidak memiliki lebih dari Rp. 100.000 atau jika pernyataan deduksi tersebut gagal. Dengan transaction akan membuat lebih mudah, karena jika ada bagian dari operasi yang gagal, keseluruhan transaction akan dilepas. Ini berarti bahwa tabel dan data di dalamnya kembali ke keadaan sebelumnya.

Pada artikel selanjutnya : membuat transactions dengan menggunakan MySQL.