Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Для фиксации или отката транзакции в режиме ручной фиксации приложение вызывает SQLEndTran. Драйверы для СУБД, поддерживающие транзакции, обычно реализуют эту функцию, выполнив инструкцию COMMIT или ROLLBACK . Диспетчер драйверов не вызывает SQLEndTran , если подключение находится в режиме автоматической фиксации; оно просто возвращает SQL_SUCCESS, даже если приложение пытается откатить транзакцию. Так как драйверы для СУБД, которые не поддерживают транзакции, всегда находятся в режиме автоматической фиксации, они могут либо реализовать SQLEndTran для возврата SQL_SUCCESS без каких-либо действий, либо не реализовать его вообще.
Примечание.
Приложения не должны фиксировать или откатывать транзакции путем выполнения инструкций COMMIT или ROLLBACK с помощью SQLExecute или SQLExecDirect. Последствия этого не определены. Возможные проблемы включают в себя драйвер, который больше не знает, когда транзакция активна, и эти инструкции завершаются ошибкой в источниках данных, которые не поддерживают транзакции. Вместо этого эти приложения должны вызывать SQLEndTran .
Если приложение передает дескриптор среды в SQLEndTran, но не передает дескриптор подключения, диспетчер драйверов концептуально вызывает SQLEndTran с дескриптором среды для каждого драйвера, имеющего одно или несколько активных подключений в среде. Затем драйвер фиксирует транзакции в каждом соединении в среде. Однако важно понимать, что ни драйвер, ни диспетчер драйверов не выполняют двухэтапную фиксацию подключений в среде; Это просто удобство программирования для одновременного вызова SQLEndTran для всех подключений в среде.
(Двухэтапная фиксация обычно используется для фиксации транзакций, которые распределяются по нескольким источникам данных. На первом этапе источники данных опрашиваются о том, могут ли они зафиксировать свою часть транзакции. На втором этапе транзакция фактически фиксируется во всех источниках данных. Если какие-либо источники данных отвечают на первый этап, что они не могут зафиксировать транзакцию, второй этап не происходит.)