Las transacciones pasan por diferentes estados según el momento de ejecución en que se encuentren.
Típicamente existen los siguiente tipos de estado:
- Active: Transacción activa, que se está ejecutando actualmente.
- Abort: Rollback invocado adrede o automático. El manual depende del usuario, en cambio si es automático puede haber sucedido por cualquier tipo de imprevisto.
- Partially committed: Se produce después de ejecutar el commit. En este punto podemos encontrar que la transacción ha violado la seriabilidad, o bien una regla de integridad. Entonces será necesario abortar la transacción (rollback automático). En este punto se puede dar la casualidad de una caída fuerte del sistema.
- Failed: Llegamos a este estado cuando se produce un rollback automático por un abort, o bien por el fallo del estado anterior (partially committed).
El diagrama de estados es el siguiente:
Una transacción que engloba más de una operación, siempre empieza por un Begin o Begin Transaction, y mientras se va ejecutando está en el estado activo.
La transacción puede verse irrumpida inesperadamente por cualquier tipo de imprevisto, típicamente por problemas de hardware, conectividad, entre otras. O también puede se descartar mediante un Rollback ejecutado por el propio usuario. Entonces la transacción pasa al estado Failed, para acabar finalmente en el estado Abort. En este último estado mencionado, el sistema de gestión de bases de datos tiene que ejecutar todos los procedimientos adecuados para descartar y vaciar la información almacenada hasta este punto.
Por el contrario, una transacción activa puede verse confirmada al ejecutarse el Commit. Entonces se pasa al estado de Partially committed, donde el gestor garantizará la seriabilidad y que todas las reglas de integridad se cumplan, por tanto la propiedad de consistencia. Si durante este estado se produce un fallo correspondiente a la seriabilidad, reglas de integridad, o si el sistema se cayese en ese momento, la transacción abortaría su ejecución y pasaría al estado de Failed, para acabar en el estado de Abort.
Si todo es correcto, finalmente la transacción pasa al estado Committed. En este momento el gestor tiene que garantizar la propiedad de persistencia.