Option=3 だけでは、トランザクション(BEGIN/COMMIT/ROLLBACK)は自動では有効になりません。

結論から先に言うと:

Option=3 だけでは、トランザクション(BEGIN/COMMIT/ROLLBACK)は自動では有効になりません。

つまり、

  • Option=3SQL_AUTO_IS_NULLオフ(1)+スペースパディングオフ(2)
  • トランザクション有効化用のビット(16)は含まれていません!

【整理】Optionの意味

ビット値意味
1SQL_AUTO_IS_NULLをオフ
2CHAR列のスペースパディングをオフ
16トランザクションサポート有効(!)

→ トランザクションを使いたいなら、Optionに16を含める必要があります。


【正しい設定例】

たとえば、
通常のOption=3 にトランザクションサポートも追加したい場合

3 + 16 = 19

だから、接続文字列では

"Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;User=root;Password=your_password;Option=19;"

にします!


【まとめ】

項目結論
Option=3だけの場合トランザクションサポートは有効にならない
トランザクションを有効にするにはOptionに16を加える(例:3 + 16 = 19
推奨設定最初からOption=19にするのが安全

【実際にADOトランザクションを使う流れ】

Dim con As Object
Set con = CreateObject("ADODB.Connection")
con.Open "Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;User=root;Password=your_password;Option=19;"

' トランザクション開始
con.BeginTrans

' SQLを実行
con.Execute "INSERT INTO table1 (col1) VALUES ('test')"

' 成功したら確定
con.CommitTrans

' 失敗したらロールバック(エラー処理で)
con.RollbackTrans

ADOには

  • BeginTrans
  • CommitTrans
  • RollbackTrans があります。
    これを手動で管理できるようになります。

【補足】

  • MySQL自体がInnoDBなどのトランザクション対応エンジンを使っている必要があります。
  • テーブルがMyISAM型だと、トランザクションしても効果がありません(MyISAMは非対応)。

【結論まとめ】

設定内容
Option=3トランザクション無効(通常接続)
Option=19トランザクション有効(3+16)
トランザクション操作(BeginTrans, CommitTrans)手動で行う必要がある

✏️ 必要なら、このOptionの違いをテストするサンプル(トランザクションあり/なしを比較するVBAコード)も作れます!
👉 作成しますか?(すぐ見分けられる実験用コードです)

よかったらシェアしてね!
目次