Transacciones
Actualización: noviembre 2007
El concepto de transacción se desarrolló para atender los casos en los que el estado resultante de la base de datos depende del éxito completo en una serie de operaciones. Este concepto vio la luz debido a que varias operaciones sucesivas pueden modificar el resultado de operaciones anteriores. En esos casos, si alguna operación produce un error, el estado resultante puede ser indeterminado.
Para solucionar este problema, las transacciones agrupan una serie de operaciones de manera que es posible garantizar la integridad del resultado final. O todas las operaciones se ejecutan con éxito y se confirman (se escriben en la base de datos), o toda la transacción se considera no realizada. La acción de cancelar una transacción se denomina deshacer la transacción. Deshacer una transacción permite anular los cambios y recuperar el estado de la base de datos previo a la transacción.
Por ejemplo, en una transacción bancaria automatizada, si un banco transfiere dinero desde la cuenta A a la cuenta B, la retirada de fondos de A y el depósito en B deben producirse con éxito para procesar los fondos correctamente, de lo contrario la transacción entera debe cancelarse.
Una transacción debe tener las propiedades siguientes:
Atomicidad Una transacción constituye una unidad atómica de ejecución y se ejecuta exactamente una vez; o se realiza todo el trabajo o nada de él en absoluto.
Coherencia Una transacción mantiene la coherencia de los datos, transformando un estado coherente de datos en otro estado coherente de datos. Los datos enlazados por una transacción deben conservarse semánticamente.
Aislamiento Una transacción es una unidad de aislamiento y cada una se produce aislada e independientemente de las transacciones concurrentes. Una transacción nunca debe ver las fases intermedias de otra transacción.
Durabilidad Una transacción es una unidad de recuperación. Si una transacción tiene éxito, sus actualizaciones persisten, aunque el equipo se bloquee o se apague. Si una transacción no tiene éxito, el sistema permanece en el estado anterior a confirmar la transacción.
Tanto OLE DB (vea Admitir transacciones en OLE DB) como ODBC (vea Transacción (ODBC)) son compatibles con las transacciones.
Una transacción distribuida es una transacción que actualiza datos distribuidos, es decir, datos repartidos en más de un equipo de una red. Si se desea admitir transacciones en un sistema distribuido, se debe utilizar Microsoft .NET Framework en lugar de la compatibilidad con transacciones de OLE DB.
Para obtener más información acerca de las transacciones en Microsoft .NET Framework, vea Procesar transacciones en el Kit de desarrollo de software de Windows (SDK).