Транзакции в ODBC

Транзакции в ODBC управляются на уровне подключения. Когда приложение завершает транзакцию, оно фиксирует или откатывает всю работу, завершенную с помощью всех дескрипторов инструкций в этом соединении. Чтобы зафиксировать или откат транзакции, приложения должны вызывать SQLEndTran вместо отправки инструкции COMMIT или ROLLBACK.

Приложение вызывает SQLSetConnectAttr для переключения между двумя режимами управления транзакциями ODBC:

  • Режим автокоммитирования

    Каждая инструкция автоматически фиксируется при успешном завершении. При запуске в режиме автокоммитирования другие функции управления транзакциями не требуются.

  • Режим фиксации вручную

    Все выполняемые инструкции включаются в одну транзакцию, пока она не будет остановлена путем вызова SQLEndTran.

Режим автокоммитирования — это режим транзакции по умолчанию для ODBC. При создании подключения он находится в режиме автоматической фиксации до вызова SQLSetConnectAttr для переключения в режим ручной фиксации, задав режим автоматической фиксации. Когда приложение отключает автокоммит, следующая инструкция, отправленная в базу данных, запускает транзакцию. Затем транзакция остается в силе, пока приложение не вызовет SQLEndTran с параметрами SQL_COMMIT или SQL_ROLLBACK. Команда, отправленная в базу данных после запуска следующей транзакции SQLEndTran .

Если приложение переключается с ручной фиксации в режим автоматической фиксации, драйвер фиксирует все транзакции, открытые в настоящее время в подключении.

Приложения ODBC не должны использовать Transact-SQL инструкции транзакций, такие как BEGIN TRANSACTION, COMMIT TRANSACTION или ROLLBACK TRANSACTION, так как это может привести к неопределенному поведению в драйвере. Приложение ODBC должно работать в режиме автоматической фиксации и не использовать какие-либо функции управления транзакциями или инструкции, либо выполняться в режиме ручной фиксации и использовать функцию ODBC SQLEndTran для фиксации или отката транзакций.

См. также

Выполнение транзакций (ODBC)