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 函数提交或回滚事务。

另请参阅

执行事务 (ODBC)