Perintah Commit dan Rollback digunakan untuk mencegah adanya upnormal data didatabase setelah dilakukan eksekusi perintah SQL.
Contohnya dalam satu Procedure terjadi lebih dari satu perintah SQL sehingga jika salah satu perintah berhasil di eksekusi sedangkan perintah terakhir gagal dimana kegagalan tersebut di sebabkan oleh kesalahan syntax error atau koneksi database terputus sehingga data yang ada di database tidak lengkap karena salah satu perintah SQL gagal di eksekusi.
Contoh :
Ada dua Perintah SQL, Pertama Perintah SQL untuk Insert ke Tabel Header dan Kedua untuk Insert ke Tabel Detail. ketika Perintah Insert ke Tabel Header Berhasil dan Insert ke Tabel Detail gagal maka Perintah Insert ke Tabel Header yang berhasil di eksekusi juga akan digagalkan.
Untuk melakukan hal tersebut bisa menggunakan BeginTransaction di akhiri dengan Commit jika berhasil dan Rollback jika gagal.
Contoh Syntax di VB.Net adalah seperti berikut ini :
Private Sub TransDemo(ByVal ID As Integer, ByVal dataForTab1 As String, ByVal dataForTab2 As String)
Using con As SqlConnection = New SqlConnection(strConnect)
con.Open()
Dim trans As SqlTransaction = con.BeginTransaction()
Try
Using cmd As SqlCommand = New SqlCommand("INSERT INTO TableHeader (Id, Data) VALUES (@ID, @DT", con)
cmd.Parameters.AddWithValue("@ID", ID)
cmd.Parameters.AddWithValue("@DT", dataForTab1)
cmd.ExecuteNonQuery()
End Using
Using cmd As SqlCommand = New SqlCommand("INSERT INTO TableDetail (TableHeader Id, Data) VALUES (@ID, @DT", con)
cmd.Parameters.AddWithValue("@ID", ID)
cmd.Parameters.AddWithValue("@DT", dataForTab2)
cmd.ExecuteNonQuery()
End Using
trans.Commit()
Catch ex As Exception
trans.Rollback()
MessageBox.Show(ex.Message)
End Try
End Using
End Sub
EmoticonEmoticon