Mengendalikan Transaksi Database

Dalam database, transaksi adalah segala perubahan yang bisa terjadi pada database, terutama yang berkaitan dengan data. Mengendalikan transaksi penting dilakukan di database, karena transaksi database harus benar-benar selesai atau tidak sama sekali. Ada setidaknya 3 klausa yang bisa digunakan untuk mengendalikan transaksi yaitu COMMIT, ROLLBACK dan SAVEPOINT.

COMMIT digunakan untuk menyelesaikan transaksi. Transaksi-transaksi yang sudah di-COMMIT tidak bisa dibatalkan, karena memang sudah di-ikhlas-kan untuk terjadi. COMMIT bisa dilakukan dengan mengeksekusinya atau bisa terjadi secara otomatis seperti misalnya ketika perintah INSERT dilakukan, setelahnya dilakukan perintah CREATE TABLE. Maka perintah INSERT tersebut tidak bisa dibatalkan.

ROLLBACK berfungsi untuk mengembalikan atau membatalkan transaksi sebelum dilakukan COMMIT. ROLLBACK tanpa ROLLBACK TO SAVEPOINT akan membatalkan keseluruhan transaksi yang terjadi.

SAVEPOINT digunakan untuk memecah-mecah transaksi. Ini penting ketika transaksi yang dilakukan banyak (misal mengupdate beberapa rows di beberapa tabel dalam sekali eksekusi) sehingga kita bisa membatalkan di bagian transaksi tertentu saja.

Sebagai contoh, berkut adalah beberapa query transaksi insert yang dilakukan pada tabel “departemen”. Query ini dilakukan pada DBMS Oracle.

INSERT INTO departemen(department_id,department_name) VALUES(111,'test 111');
SAVEPOINT sv1;
INSERT INTO departemen(department_id,department_name) VALUES(222,'test 222');
INSERT INTO departemen(department_id,department_name) VALUES(333,'test 333');
SAVEPOINT sv2;
INSERT INTO departemen(department_id,department_name) VALUES(444,'test 444');

Pada query-query di atas terdapat 2 savepoint dengan nama sv1 dan sv2. sv1 digunakan untuk menandai transaksi INSERT dengan nilai 222 dan 333, sedangkan sv2 untuk data 444. Transaksi di atas belum di-COMMIT.

Seandainya perintah ROLLBACK dieksekusi, maka semua INSERT akan dibatalkan. Kemudian, seandainya

ROLLBACK TO sv1 

dijalankan, maka INSERT data 222,333 dan 444 dibatalkan. Bagaimana kalau

ROLLBACK TO sv2 

dilakukan ? Mana transaksi yang dibatalkan?

Semaga bermanfaat.

Leave a Reply

Your email address will not be published.