TRANSACTION
Contoh:
Misalkan si-A memiliki saldo direkeningnya sebesar 5.000.00 dan si-B saldonya 1.000.000, kemudian si-
A mentransfer uangnya ke si-B sebesar 500.00 maka bentuk prosesnya sebagai berikut :
- Saldo si-A dikurangi 500.000 sehingga sisa saldonya 4.500.000
- Saldo si-B ditambah 500.000 sehingga saldonya 1.500.000
Kedua proses tersebut harus jalan agar data total saldonya konsisten, jika ada salah satu proses yang
batal akibat pemadaman listrik atau kendala teknis lainnya maka seluruh proses harus dibatalkan karena
jika tidak maka total saldo si-A berkurang tetapi saldo si-B tidak bertambah.
Dari ilustrsi diatas dapat disimpulkan bahwa kedua proses tersebut merupakan satu kesatuan transaksi.
Jika ada salah satu proses yang batal maka semua proses dibatalkan. Transaksi berhasil jika semua
proses berhasil dijalankan.
SIFAT-SIFAT TRANSACTION
Hasil dari perintah diatas menampilkan daftar engine yang mendukung transaksi basis data.
Untuk sequence tidak dapat digunakan secara eksplisit dalam membuat tabel karena hanya
berfungsi untuk menampilkan urutan angka secara ascending maupun descending
Implementasi Transaction
Transaksi pada MySQL dibuka dengan perintah : BEGIN; atau START TRANSATION;
Jika terjadi error atau keluar dari DBMS sebelum perintah commit maka seluruh proses akan
dibatalkan
Praktikum 1:
Buat database ‘bank’ dan tabel ‘rekening’:
Lanjutan Praktikum 1 :
Tambahkan data pada rekening
Saldo si-A 5.000.000
Saldo si-B 1.000.000
Memindahkan saldo dari si-A ke si-B sebesar 500.000. Transaksi dimulai dengan perintah berikut:
Transaksi ini terdiri atas 2 proses yaitu proses-1 mengurangi saldo si-A dan proses-2 menambah saldo si-B.
Proses-1 dilakukan dengan mengurangi saldo si-A yang mempunyai no.Rek 0000000001
Hal ini menunjukkan bahwa seluruh proses setelah START TRANSACTION akan dibatalkan jika perintah
COMMIT tidak dijalankan
Praktikum 2:
Pada contoh 2 ini, kita akan coba menyelesaikan seluruh proses hingga commit . Kemudian keluar dari mysql
dan masuk kembali untuk mengecek apakah proses masih tersimpan
Setelah di cek posisi saldo tetap sama yang artinya seluruh proses tetap tersimpan secara permanen
Autocommit Mode
Selain menggunakan pernyataan START TRANSACTION, transaction juga dapat diatur
menggunakan autocommit. Nilai default dari autocommit adalah 1 yang menyatakan bahwa
transaksi basis data tidak aktif atau setiap perintah akan langsung diterapkan secara permanen
jika tidak menggunakan START TRANSACTION.
Berikut perintah untuk mengecek autocommit :
Praktikum 3 :
Atur variabel autommit dengan nilai 0
Keluar dari MySQL dan masuk kembali untuk mengecek data pada tabel rekening
Keluar dari MySQL dan masuk kembali untuk mengecek data pada tabel rekening
Menutup mysql
Praktikum 4 :
Manambahkan data pada tabel rekening
Hasil dari perintah diatas terlihat bahwa data yang dimasukkan tidak tersimpan secara permanen karena
adanya perintah ROLLBACK;
Savepoint Transaction
Dengan ROLLBACK seluruh proses akan dibatalkan. Terkadang situasi tersebut tidak diinginkan
misalnya terdapat 3 proses namun hanya proses 2 dan 3 yang akan dibatalkan sedangkan proses
1 tetap dijalankan. Untuk kasus seperti ini dapat menggunakan SAVEPOINT.
Berikut perintahnya : SAVEPOINT nama_savepoint;
Praktikum 5 :
Tambahkan data rekening dengan nama si-D dan buat savepoint dengan nama proses_1
Dari hasil perintah diatas terlihat bahwa data rekening dengan nama si-E dibatalkan.
Lanjutan Praktikum 5 :
Jalankan perintah COMMIT untuk menyimpan data secara permanen
LANJUT KE MATERI BERIKUTNYA