Поделиться через


Методы BeginTrans, CommitTrans и RollbackTrans (ADO)

Эти методы транзакций управляют обработкой транзакций в объекте Connection следующим образом:

  • Begintrans Начинает новую транзакцию.

  • Committrans Сохраняет все изменения и завершает текущую транзакцию. Он также может начать новую транзакцию.

  • RollbackTrans Отменяет все изменения, внесенные во время текущей транзакции, и завершает транзакцию. Он также может начать новую транзакцию.

Синтаксис

  
level = object.BeginTrans()  
object.BeginTrans  
object.CommitTrans  
object.RollbackTrans  

Возвращаемое значение

BeginTrans можно вызвать как функцию, возвращающую переменную Long , указывающую уровень вложенности транзакции.

Параметры

object
Объект Connection .

Подключение

Используйте эти методы с объектом Connection , если требуется сохранить или отменить ряд изменений, внесенных в исходные данные в виде единого блока. Например, чтобы перевести деньги между счетами, вычесть сумму из одного счета и добавить ту же сумму к другому. Если любое из обновлений завершается сбоем, счета перестают балансировать. Внесение этих изменений в открытой транзакции гарантирует, что все изменения или ни один из них не будут внесены.

Примечание

Не все поставщики поддерживают транзакции. Убедитесь, что определяемое поставщиком свойство Transaction DDL отображается в коллекции Свойств объекта Connection, указывая, что поставщик поддерживает транзакции. Если поставщик не поддерживает транзакции, вызов одного из этих методов приведет к ошибке.

После вызова метода BeginTrans поставщик больше не будет мгновенно фиксировать внесенные изменения, пока вы не вызовете CommitTrans или RollbackTrans для завершения транзакции.

Для поставщиков, поддерживающих вложенные транзакции, вызов метода BeginTrans в открытой транзакции запускает новую вложенную транзакцию. Возвращаемое значение указывает уровень вложенности: возвращаемое значение "1" означает, что вы открыли транзакцию верхнего уровня (то есть транзакция не вложена в другую транзакцию), "2" означает, что вы открыли транзакцию второго уровня (транзакцию, вложенную в транзакцию верхнего уровня) и т. д. Вызов CommitTrans или RollbackTrans влияет только на последнюю открытую транзакцию; Перед разрешением любых транзакций более высокого уровня необходимо закрыть или откатить текущую транзакцию.

Вызов метода CommitTrans сохраняет изменения, внесенные в открытой транзакции в соединении, и завершает транзакцию. Вызов метода RollbackTrans отменяет все изменения, внесенные в открытой транзакции, и завершает транзакцию. Вызов любого из методов при отсутствии открытой транзакции приводит к ошибке.

В зависимости от свойства Attributes объекта Connection вызов методов CommitTrans или RollbackTrans может автоматически запустить новую транзакцию. Если для свойства Attributes задано значение adXactCommitRetaining, поставщик автоматически запускает новую транзакцию после вызова CommitTrans . Если для свойства Attributes задано значение adXactAbortRetaining, поставщик автоматически запускает новую транзакцию после вызова RollbackTrans .

Remote Data Service

Методы BeginTrans, CommitTrans и RollbackTrans недоступны в объекте Подключения на стороне клиента.

Применение

Объект Connection (ADO)

См. также:

Примеры методов BeginTrans, CommitTrans и RollbackTrans (VB)
Примеры методов BeginTrans, CommitTrans и RollbackTrans (VC++)
Свойство Attributes (ADO)