Compartir a través de


Procesamiento de transacciones

Se aplica a: Access 2013, Office 2013

ADO proporciona los siguientes métodos para controlar transacciones: BeginTrans, CommitTrans y RollbackTrans. Utilice estos métodos con un objeto Connection cuando desee guardar o cancelar una serie de cambios realizados en los datos de origen como una sola unidad. Por ejemplo, para transferir dinero entre cuentas, se resta una cantidad de una de las cuentas y se suma la misma cantidad a la otra. Si alguna de las actualizaciones no se realiza correctamente, las cuentas ya no están equilibradas. Si se realizan estos cambios en una transacción abierta, se garantiza que se llevan a cabo todos los cambios, o bien, que no se lleva a cabo ninguno de los cambios.

Nota:

No todos los proveedores admiten transacciones. Compruebe que la propiedad definida por el proveedor "Transaction DDL" aparece en la colección Properties del objeto Connection, lo que indica que el proveedor admite transacciones. Si el proveedor no las admite y se llama a uno de estos métodos, se devolverá un error.

Después de llamar al método BeginTrans, el proveedor ya no confirmará instantáneamente los cambios realizados hasta que se llame a CommitTrans o a RollbackTrans para finalizar la transacción.

Si se llama al método CommitTrans, se guardan los cambios realizados en una transacción abierta en la conexión y finaliza la transacción. Si se llama al método RollbackTrans, se deshacen los cambios realizados en una transacción abierta y finaliza la transacción. Si se llama a cualquiera de los métodos cuando no hay ninguna transacción abierta, se genera un error.

En función de la propiedad Attributes del objeto Connection, una llamada a los métodos CommitTrans o RollbackTrans puede iniciar automáticamente una transacción nueva. Si el valor de la propiedad Attributes es adXactCommitRetaining, el proveedor inicia automáticamente una transacción nueva después de una llamada a CommitTrans. Si el valor de la propiedad Attributes es adXactAbortRetaining, el proveedor inicia automáticamente una transacción nueva después de una llamada a RollbackTrans.

Nivel de aislamiento de transacción

Use la propiedad IsolationLevel para establecer el nivel de aislamiento de una transacción en un objeto Connection. La configuración no se aplica hasta la siguiente vez que se llame al método BeginTrans. Si el nivel de aislamiento solicitado no está disponible, el proveedor puede devolver el siguiente mayor valor de aislamiento. Consulte la propiedad IsolationLevel en la referencia del programador de ADO para obtener más información sobre los valores válidos.

Transacciones anidadas

En el caso de los proveedores que admiten transacciones anidadas, al llamar al método BeginTrans dentro de una transacción abierta se inicia una nueva transacción anidada. El valor devuelto indica el nivel de anidamiento: un valor devuelto de "1" indica que ha abierto una transacción de nivel superior (es decir, que la transacción no está anidada dentro de otra transacción), "2" indica que ha abierto una transacción de segundo nivel (una transacción anidada dentro de una transacción de nivel superior), etc. Llamar a CommitTrans o RollbackTrans afecta solo a la transacción abierta más recientemente; debe cerrar o revertir la transacción actual para poder resolver las transacciones de nivel superior.