Transacción
Un grupo de operaciones sobre una base de datos que se aplican todas juntas o ninguna, para que los datos nunca queden a medias.
Si una operación necesita varios pasos (restar de una cuenta y sumar en otra), la transacción garantiza que un fallo a mitad no deje los datos inconsistentes.
Se empieza con BEGIN, se confirma con COMMIT y se deshace con ROLLBACK. Las bases de datos relacionales siguen las propiedades ACID: atomicidad, consistencia, aislamiento y durabilidad.
Un ejemplo
Si se va la luz entre restar y sumar el dinero de una transferencia, la transacción se deshace y nadie pierde dinero.
Por qué importa
Una transacción agrupa varias operaciones sobre la base de datos para que se ejecuten como una sola: o se aplican todas o no se aplica ninguna. El ejemplo clásico es una transferencia bancaria: restar el dinero de una cuenta y sumarlo en otra. Si el sistema falla entre las dos operaciones, sin transacción el dinero desaparecería; con ella, la primera se deshace automáticamente.
Se resumen en las propiedades ACID: atomicidad (todo o nada), consistencia (los datos cumplen las reglas antes y después), aislamiento (una transacción no ve a medias lo que hace otra) y durabilidad (lo confirmado no se pierde). En SQL se usan BEGIN para empezar, COMMIT para confirmar y ROLLBACK para deshacer. Es imprescindible en tiendas, reservas, pagos y cualquier operación que toque varias tablas a la vez.
Confusiones frecuentes
Se confunde la transacción con la simple ejecución de varias consultas seguidas: sin BEGIN y COMMIT, cada una se confirma por separado y no hay vuelta atrás entre ellas. Otro error común es dejar una transacción abierta mucho tiempo: puede bloquear filas y hacer esperar a otros usuarios. Y no todos los sistemas las ofrecen con las mismas garantías: muchas bases NoSQL las limitan o las implementan de otra forma, por lo que conviene revisar la documentación del gestor que uses.
Preguntas frecuentes
¿Qué hace `ROLLBACK`?
Deshace todos los cambios realizados desde el inicio de la transacción, dejando los datos como estaban. Se usa cuando algo falla antes de confirmar.
¿Qué pasa si se corta la luz en mitad de una transacción?
Si no se llegó a confirmar, al reiniciar el gestor la deshace y los datos quedan consistentes. Si ya se confirmó, la durabilidad garantiza que el cambio se conserva.
Fuentes consultadas
- Transactions (PostgreSQL Documentation)