ODBC 中的交易
ODBC 中的交易會在連接層級進行管理。 當應用程式完成交易時,它會認可或回復透過該連接之所有陳述式控制代碼完成的所有工作。 若要認可或回復交易,應用程式應該呼叫 SQLEndTran 而非提交 COMMIT 或 ROLLBACK 陳述式。
應用程式會呼叫 SQLSetConnectAttr,在管理交易的兩個 ODBC 模式之間切換:
自動認可模式
每個陳述式都會在成功完成時自動認可。 當您在自動認可模式下執行時,不需要其他任何交易管理函數。
手動認可模式
所有執行的陳述式都包含在相同的交易中,直到特別呼叫 SQLEndTran 來停止該交易為止。
自動認可模式是 ODBC 的預設交易模式。 建立連接時,該交易都處於自動認可模式,直到呼叫 SQLSetConnectAttr,將自動認可模式設定為關閉來切換到手動認可模式為止。 當應用程式關閉自動認可時,傳送到資料庫的下一個陳述式會啟動交易。 接著,交易會維持作用,直到應用程式利用 SQL_COMMIT 或 SQL_ROLLBACK 選項呼叫 SQLEndTran 為止。 在 SQLEndTran 之後傳送到資料庫的命令會啟動下一個交易。
如果應用程式從手動認可模式切換到自動認可模式,驅動程式會認可目前在連接上開啟的所有交易。
ODBC 應用程式不應使用 Transact-SQL 交易陳述式 (例如,BEGIN TRANSACTION、COMMIT TRANSACTION 或 ROLLBACK TRANSACTION),因為這可能會在驅動程式上造成未定的行為。 ODBC 應用程式應該在自動認可模式下執行,而且不應該使用任何交易管理函數或陳述式,或者應該在手動認可模式下執行,並使用 ODBC SQLEndTran 函數來認可或回復交易。