ROLLBACK TRANSACTION (Transact-SQL)

Posted on

ROLLBACK TRANSACTION (Transact-SQL) | Seiring dengan Pesatnya kemajuan teknologi, perangkat lunak database semakin berkembang, baik dalam hal penggunaan, ukuran, maupun kompleksitas, di samping itu adalah masalah yang timbul yang bisa menjadi sangat fatal jika tidak terpecahkan solusinya, yaitu masalah teknis saat penarikan uang di atm, ketika nasabah sedang melakukan penarikan uang dan tiba-tiba terdapat gangguan teknis seperti mati lampu, atm akan mati secara tiba-tiba. bagaimana jika saat ini nasabah sedang melakukan penarikan uang dan kondisi saldo sudah terpotong namun uang belum keluar dari mesin atm, tentu saja hal ini dapat merugikan nasabah bank tersebut. maka dari itu hadirlah sebuah sistem baru yang dapat mengatasi masalah tersebut.

ROLLBACK TRANSACTION (Transact-SQL) adalah sebuah cara untuk membatalkan / mengembalikan perubahan yang telah di lakukan sebelumnya, hal ini bisa di lakukan sebelum sistem mengcommit transaksi, COMMIT sendiri adalah menyimpan perubahan yang telah di lakukan secara permanen, biasanya perbankan akan mengcommit perubahan setelah 24 jam.

SQL SERVER – SQL SERVER adalah sistem manajemen database relasional (RDBMS) yang dirancang untuk aplikasi dengan arsitektur client/server. Istilah client, server, dan client/server dapat digunakan untuk merujuk kepada konsep yang sangat umum atau hal yang spesifik dari perangkat keras atau perangkat lunak. Pada level yang sangat umum. Jadi secara umum SQL Server adalah sebuah Software yang dibuat oleh perusahaan Microsoft yang digunakan untuk membuat database yang dapat diimplementasikan untuk Client Server. CLIENT adalah setiap komponen dari sebuah sistem yang meminta layanan atau sumber daya (resource) dari komponen sistem lainnya. SERVER adalah setiap komponen sistem yang menyediakan layanan atau sumber daya ke komponen sistem lainnya.

Transact-SQL – Transact-SQL (disingkat T-SQL) adalah jenis bahasa untuk basis data SQL yang dikeluarkan oleh perusahaan Microsoft dan Sybase. Pada sistem berbasis Microsoft, T-SQL ini diimplementasikan pada perangkat lunak Microsoft SQL Server, sedangkan pada sistem berbasis Sybase, bahasa Transact-SQL ini dipakai pada perangkat lunaknya yang bernama Adaptive Server Enterprise dan Sybase SQL Server.

Seperti bahasa dalam kebanyakan basis data SQL, T-SQL ini mempunyai beberapa fitur:

  • bahasa kendali alir (control flow)
  • variabel lokal
  • pemrosesan matematis, string, tanggal (date), dll
  • perbaikan perintah DELETE dan UPDATE.

Kata kunci (keyword) yang dipakai meliputi perintah BEGIN dan END, BREAK, CONTINUE, GOTO, IF dan ELSE, RETURN, WAITFOR, serta WHILE. Beberapa contoh dari penggunaan bahasa T-SQL ini adalah:

Contoh : Query SQL

create procedure ilhamjuni
(@idpegawai varchar(5),@nama varchar(50), @bagian varchar(1))
as
begin
	BEGIN TRY
		BEGIN TRANSACTION
		
		INSERT into pegawai (id_pegawai, nama, bagian)
		values (@idpegawai,@nama,@bagian)
		save transaction namesavepoint1
		
		select @bagian = COUNT(*) from pegawai where bagian=@bagian
		
		if @bagian > 1
		begin
			rollback transaction
			print 'Data sudah ada'
			save transaction namesavepoint2
		end
		else
		begin
			commit transaction
			print 'data berhasil ditambah'
		end
		return 0
	end try
	begin catch
	
		RAISERROR 130003 'KESALAHAN PADA DATA INPUTAN, SILAHKAN ULANGI'
		IF @@TRANCOUNT >0
		ROLLBACK TRANSACTION namesavepoint1
	end catch
end
go

#1 Analisis proses

Query di atas berfungsi untuk membuat sebuah store procedure baru dengan nama ilhamjuni, store procedure ini memiliki fungsi untuk penginputan data baru ke tabel pegawai dan memberikan keterangan terhadap query yang telah di eksekusi, jika data berhasil di inputkan maka akan muncul informasi “Data berhasil di tambah”, jika data sudah ada maka muncul “Data sudah ada” dan semisal kita menginputkan data yang tidak sesuai dengan format yang telah di tentukan maka akan muncul “KESALAHAN PADA DATA INPUTAN, SILAHKAN ULANGI”.

Query akan di eksekusi perbaris dan akan di lakukan pengecekan kondisi. jika kondisinya sudah terpenuhi maka data dapat di entri ke database jika tidak maka data akan di rollback (di kembalikan)

#2 Manfaat dari transaction

  • COMMIT : Mengakhiri sebuah transaksi dan membuat setiap perubahan selama transaksi tersebut menjadi permanen
  • ROLLBACK : Perintah ini akan mengakhiri transaksi dan membatalkan perubahan-perubahan yang telah di buat selama transaksi .

Rollback berguna untuk dua alasan.

  • Pertama, jika kita membuat kesalahan ketika menghapus baris data dari table, rollback mengembalikan data pertama.
  • Kedua, jika kita memulai transaksi yang tidak dapat kita selesaikan karena munculnya exception atau gagalnya perintah SQL, rollback mengijinkan kita untuk kembali ke titik awal untuk melakukan pembetulan dan mungkin mencobanya lagi.

#3 Penjelasan query

create procedure ilhamjuni //membuat procedure dengan nama ilhamjuni
(@idpegawai varchar(5),@nama varchar(50), @bagian varchar(1)) //deklarasi variabel dengan menyertakan type data dan nilainya

as
begin
	BEGIN TRY
		BEGIN TRANSACTION
		

//query untuk menginsert pada tabel pegawai
		INSERT into pegawai (id_pegawai, nama, bagian)
		values (@idpegawai,@nama,@bagian)
		save transaction namesavepoint1
		
		//untuk mengecek 
		select @bagian = COUNT(*) from pegawai where bagian=@bagian
		
		//pengecekan kondisi, jika @bagian memiliki nilai lebih dari 1
maka data yang telah di inputkan akan di rollback dan memunculkan 
notifikasi “data sudah ada” 
		if @bagian > 1
		begin
			rollback transaction
			print 'Data sudah ada'
			save transaction namesavepoint2
		end
		else
		begin
			commit transaction //jika semua kondisi terpenuhi maka
perubahan yang terlah di lakukan akan di simpan secara
permanen
			print 'data berhasil ditambah'
		end
		return 0
	end try
	begin catch
	
		RAISERROR 130003 'KESALAHAN PADA DATA INPUTAN, SILAHKAN ULANGI'
		IF @@TRANCOUNT > 0
		ROLLBACK TRANSACTION namesavepoint1
	end catch
end
go

Percobaan Eksekusi Query input :

  • Data berhasil di inputkan
  • jika inputan salah
    keterangan : pada field idpegawai memiliki tipe data yang unik, jadi tidak boleh ada type data yang sama, sedangkan data yang di inputkan adalah 88, nilai 88 sudah ada di field pegawai maka terjadilah error yang mengakibatkan data gagal di inputkan
  • jika data yang di inputkan sudah ada

#4 Kesimpulan
dengan adanya Transact (rollback dan commit) kita dapat membatalkan atau menyimpan perubahan secara permanen dalam database, hal ini sangat penting di lakukan dalam hal menangani sebuah transaksi, sebagai contoh : jika jika sedang melakukan penarikan uang melalui atm, pada saat atm akan mengeluarkan uang tiba-tiba mati lampu maka biasanya saldo kita terpotong namun uang tidak keluar akibat mesin atm mati, setelah kita melapor maka kita bisa mendaptkan kembali saldo kita yang hilang, pihak bank akan merollback transaksi yang telah kita lakukan sebelumnya dan semua proses ini di lakukan dalam database sehingga bisa kita kita perlu pusing2 coding dalam Bahasa pemrograman dan dalam menghemat resource server.

Download PDF

Leave a Reply

Your email address will not be published. Required fields are marked *