Compartir a través de


Transacciones ODBC

Una transacción es una unidad de trabajo que se realiza como una sola operación atómica; es decir, la operación se realiza correctamente o produce un error en su conjunto. Por ejemplo, considere la posibilidad de transferir dinero de una cuenta bancaria a otra. Esto implica dos pasos: retirar el dinero de la primera cuenta y depositarlo en el segundo. Es importante que ambos pasos se realicen correctamente; no es aceptable que un paso se realice correctamente y el otro produzca un error. Una base de datos que admite transacciones puede garantizar esto.

Las transacciones se pueden completar confirmando o reviertiendo. Cuando se confirma una transacción, los cambios realizados en esa transacción se realizan de forma permanente. Cuando se revierte una transacción, las filas afectadas se devuelven al estado en que estaban antes de que se iniciara la transacción. Para ampliar el ejemplo de transferencia de cuentas, una aplicación ejecuta una instrucción SQL para cargar la primera cuenta y una instrucción SQL diferente para acreditar la segunda. Si ambas instrucciones se realizan correctamente, la aplicación confirma la transacción. Pero si se produce un error en cualquiera de las instrucciones por cualquier motivo, la aplicación revierte la transacción. En cualquier caso, la aplicación garantiza un estado coherente al final de la transacción.

Una sola transacción puede abarcar varias operaciones de base de datos que se producen en momentos diferentes. Si otras transacciones tenían acceso completo a los resultados intermedios, las transacciones podrían interferir entre sí. Por ejemplo, supongamos que una transacción inserta una fila, una segunda transacción lee esa fila y la primera transacción se revierte. La segunda transacción ahora tiene datos para una fila que no existe.

Para solucionar este problema, hay varios esquemas para aislar las transacciones entre sí. El aislamiento de transacciones se implementa generalmente mediante el bloqueo de filas, lo que impide que más de una transacción use la misma fila al mismo tiempo. En algunas bases de datos, el bloqueo de una fila también puede bloquear otras filas.

Con un mayor aislamiento de transacción se reduce la simultaneidad o la capacidad de dos transacciones para usar los mismos datos al mismo tiempo. Para obtener más información, consulte Configuración del nivel de aislamiento de transacción.

Esta sección contiene los temas siguientes.