ODBC のトランザクションは、接続レベルで管理されます。 アプリケーションは、トランザクションを完了すると、その接続のすべてのステートメント ハンドルを介して完了したすべての作業をコミットまたはロールバックします。 トランザクションをコミットまたはロールバックするには、アプリケーションは COMMIT または ROLLBACK ステートメントを送信する代わりに SQLEndTran を呼び出す必要があります。
アプリケーションは SQLSetConnectAttr を呼び出して、トランザクションを管理する 2 つの ODBC モードを切り替えます。
自動コミット モード
各ステートメントは、正常に完了すると自動的にコミットされます。 自動コミット モードで実行する場合、他のトランザクション管理機能は必要ありません。
手動コミット モード
実行されたすべてのステートメントは、 SQLEndTran を呼び出して特に停止するまで、同じトランザクションに含まれます。
自動コミット モードは、ODBC の既定のトランザクション モードです。 接続が確立されると、自動コミット モードをオフに設定して手動コミット モードに切り替えるために SQLSetConnectAttr が呼び出されるまで、自動コミット モードになります。 アプリケーションが自動コミットをオフにすると、データベースに送信される次のステートメントによってトランザクションが開始されます。 その後、アプリケーションが SQLEndTran を SQL_COMMIT または SQL_ROLLBACK オプションで呼び出すまで、トランザクションは有効なままになります。 SQLEndTran が次のトランザクションを開始した後にデータベースに送信されるコマンド。
アプリケーションが手動コミットから自動コミット モードに切り替わる場合、ドライバーは接続で現在開いているすべてのトランザクションをコミットします。
ODBC アプリケーションでは、BEGIN TRANSACTION、COMMIT TRANSACTION、ROLLBACK TRANSACTION などの Transact-SQL トランザクション ステートメントを使用しないでください。これは、ドライバーで不確定な動作を引き起こす可能性があるためです。 ODBC アプリケーションは、自動コミット モードで実行し、トランザクション管理関数やステートメントを使用しないか、手動コミット モードで実行し、ODBC SQLEndTran 関数を使用してトランザクションをコミットまたはロールバックする必要があります。