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

请参阅

概念