1. 2013
Práctica
[Tutorial de Transacciones MySQL]
Equipo 1
Castañeda Vázquez Lidia
Herrera García Anakaren
Vargas Martínez Héctor M.
1|Página
2. Transacciones en MySQL
Práctica
1. INTRODUCCIÓN
Las transacciones aportan una fiabilidad superior a las bases de datos. Si
disponemos de una serie de consultas SQL que deben ejecutarse en conjunto, con
el uso de transacciones podemos tener la certeza de que nunca nos quedaremos a
medio camino de su ejecución. De hecho, podríamos decir que las transacciones
aportan una característica de "deshacer" a las aplicaciones de bases de datos.
Son mucho más seguras y fáciles de recuperar si se produce algún fallo en el
servidor, ya que las consultas se ejecutan o no en su totalidad. Por otra parte, las
transacciones pueden hacer que las consultas tarden más tiempo en ejecutarse.
Un ejemplo típico de esto es una transacción bancaria. Por ejemplo, si una
cantidad de dinero es transferida de la cuenta de una persona a otra, se
requerirán por lo menos dos consultas:
UPDATE cuentas SET balance = balance - cantidad_transferida WHERE cliente =
persona1;
UPDATE cuentas SET balance = balance + cantidad_transferida WHERE cliente =
persona2;
Estas dos consultas deben trabajar bien, ¿pero que sucede si ocurre algún
imprevisto y "se cae" el sistema después de que se ejecuta la primer consulta,
pero la segunda aún no se ha completado?. La persona1 tendrá una cantidad de
dinero removida de su cuenta, y creerá que ha realizado su pago, sin embargo, la
persona2 estará enfadada puesto que pensará que no se le ha depositado el
dinero que le deben. En este ejemplo tan sencillo se ilustra la necesidad de que
las consultas sean ejecutadas de manera conjunta, o en su caso, que no se ejecute
1|Página
3. Transacciones en MySQL
Práctica
ninguna de ellas. Es aquí donde las transacciones toman un papel muy
importante.
Los pasos para usar transacciones en MySQL son:
Iniciar una transacción con el uso de la sentencia BEGIN.
Actualizar, insertar o eliminar registros en la base de datos.
Si se quieren los cambios a la base de datos, completar la transacción con
el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT
los cambios hechos por las consultas serán permanentes.
Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK
para cancelar los cambios que han sido realizados por las consultas que
han sido ejecutadas hasta el momento.
2. DESARROLLO
Para que lo anterior quede mejor comprendido crearemos unas tablas utilizando
los principales comandos de las transacciones.
2|Página
4. Transacciones en MySQL
Práctica
Hasta aquí todo va normal o hasta donde nosotros sabemos ahora bien que pasa
si anteponemos el comando BEGIN antes de seguir agregando datos.
Como podemos ver los datos anexados nos los muestra pero si ejecutamos el
comando ROLLBACK los cambios se desvanecen. O simplemente no se guardan
Lo mismo pasaría si la conexión se perdiera de repente y el programa se cerrara
por alguna razón o que cerráramos MySQL los datos no se guardarían.
Ahora bien para poder asegurar que los datos se guardan ocuparemos el
siguiente comando.
Con el comando COMMIT damos por hecho que
los cambios que se efectuaran en la tabla serán
permanentes y así de esta forma garantizamos
3|Página
5. Transacciones en MySQL
Práctica
que todos los datos que anexemos a nuestra tabla entraran todos o ninguno.
Veamos otros ejemplos de cómo podemos usar estas comandos para realizar
transacciones seguras.
En este ejemplo crearemos nuestra tabla y le agregaremos un registro.
Lo haremos desde la consola para que se pueda apreciar mejor.
Ya que hemos agregado el registro haremos un UPDATE pero con una transacción.
4|Página
6. Transacciones en MySQL
Práctica
Como pudimos ver los cambios se realizaron de manera correcta pero al poner el
comando ROLLBACK todo vuelve a la normalidad al igual que en ejemplo anterior
esto funciona si por alguna razón se nos cerrara nuestra base de datos los
registros no se actualizaran y la BD se quedara como al principio. Ahora veremos
que cuando ponernos el comando COMMIT los datos se guardan de manera
definitiva.
De esta manera podemos comprobar que los datos que aparecen antes de poner
el comando COMMIT son los mismos.
5|Página
7. Transacciones en MySQL
Práctica
Con esto terminamos nuestro mini tutorial acerca de transacciones en MySQL,
esperamos que les haya quedado claro o por lo menos que despejemos alguna
duda.
6|Página