トランザクション処理を行う

トランザクション処理を行う

  • トランザクション処理を開始する
  • BEGIN TRANSACTION
  • 変更を反映し、トランザクション処理を終了する
  • COMMIT TRANSACTION
  • ロールバック処理を行う
  • ROLLBACK TRANSACTION
Sub トランザクション1_SQL()
Dim myCon As New ADODB.Connection
Dim myFile As String, myCmdTxt1 As String, myCmdTxt2 As String

myFile = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb"

myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myFile

'2つの処理をまとめてトランザクション処理を行う
myCmdTxt1 = "UPDATE SQLトランザクション1_アルバイト SET 手当 = 手当 + 555;"
myCmdTxt2 = "UPDATE SQLトランザクション1_アルバイト SET 勤務時間 = 0;"

On Error GoTo Trans_Err 'エラートラップ

With myCon
  .Execute "BEGIN TRANSACTION"        '<--*トランザクション処理スタート
  .Execute myCmdTxt1                  '<--1つ目の処理を実行
  .Execute myCmdTxt2                  '<--2つ目の処理を実行
  .Execute "COMMIT TRANSACTION"       '<--ここで、変更をまとめて書き込む
End With

myCon.Close: Set myCon = Nothing

Exit Sub

Trans_Err:    'エラー時の処理
  MsgBox "エラーが発生しました。変更を破棄して終了します。"
  '変更を破棄し、トランザクション処理前の状態に戻す
  myCon.Execute "ROLLBACK TRANSACTION"
  myCon.Close: Set myCon = Nothing

End Sub

上記はこちらのサンプルをSQLに置き換えたものである。