Thursday, February 7, 2019

Printah BeginTransactions, Commit dan Rollback


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

Artikel Terkait


EmoticonEmoticon