You are on page 1of 4

Transacciones en MySQL

By windoctor

  El concepto de “Bases de Datos Transaccionales” es un  sinónimo de fiabilidad superior a las Bases de Datos  comúnes. Las Transacciones son ampliamente  utilizadas en Sistemas Bancarios por mencionar solo  un ejemplo. Una Base de Datos Transaccional alberga la idea de “o  todo ó mejor nada”. Para más información  en wikipedia.org´ A grandes razgos, la idea es que al momento de que estamos ejecutando por  ejemplo una sentencia UPDATE, esta sentencia no tenga ningún efecto hasta  que nosotros lo indiquemos con COMMIT. Por ejemplo; UPDATE bd SET campo=’valor’ WHERE id=1; Normalmente, al ejecutar la sentencia de arriba, inmediatamente los cambios se  reflejarian. Pues bien, el concepto de transacción va enfocado a que al ejecutar  dicha sentencia no pase nada!! Y los cambios sean realizados hasta que  escribamos la sentencia COMMIT. UPDATE bd SET campo=’valor’ WHERE id=1; ……………… ……………… COMMIT; //Cuándo ejecutemos COMMIT es cuándo hasta ese  momentotodas las sentencias que le preceden tendrán efecto! antes no. Esto es especialmente útil en muchos casos cuando debemos ejecutar varias  sentencias SQL pero sabemos que si alguna de ellas falla por X razón entonces  todo estará mal, los datos corrompidos y eso es un grave problema! Entonces,  es cuando podemos pensar en usar Transacciones, si en alguna sentencia ocurre  un error, se ejecuta ROLLBACK y con esto NADA se modifica, todo vuelve a  su estado original, y en cambio, si todo salio bien, se ejecuta COMMIT y los  cambios se realizan!

 esto solo es a modo de ejemplo. abriremos dos ventanas de la línea de comandos  de MySQL. Para ello desde la línea de comandos de MySQL se escribe  la siguiente sentencia:  ALTER TABLE `addressbook`. Como se sabe.  No es necesario trabajar con esta tabla. cada uno de ustedes puede trabajar con  cualquier BD que ya tenga. Ahora bien. En  una ventana. En este  ejemplo.­ UN SENCILLO EJEMPLO Es importante aclarar que para trabajar con Transacciones. modificar el campo  Telefono de la persona que tiene el id=57. Dentro de la carpeta esta el  script sql el cuál se debera ejecutar para crear la BD. ejecutamos lo que muestra la siguiente figura: . usaremos la base de datos addressbook que se utilizo en el ejercicio  de “Creación de       Reportes     en Java”   La descarga la pueden hacer aqui (click derecho y guardar como ó de lo  contrario les aparecerá que no existe la página). las tablas deben de  ser de tipo InnoDB y no MyISAM. Una vez que ya esta todo listo.`contacts` ENGINE = InnoDB. La única tabla que contiene es de tipo MyISAM por lo cuál es necesario  cambiarla a InnoDB. Para mayor comodidad y a modo de visualizar mejor los resultados. si son de este último tipo NO funcionará así  que antes de continuar deben asegurarse que usarán una tabla InnoDB. los cambios no  surtirán efecto hasta que nosotros lo indiquemos con la sentencia COMMIT. este ejercicio consiste en usar transacciones.  cambiaremos el color de fondo a una de ellas y a la otra la dejaremos así.

 los cambios  ya tendrán un efecto: . Ahora bien. Esto pasa debido a que como ya  comentamos. en la otra ventana que tenemos disponible es  donde iniciaremos la transacción: Al teclear las sentencias mostradas en la anterior figura. nuevamente nos  cambiamos a la otra ventana y ejecutamos por segunda vez la consultaSELECT  * FROM contacts. Notarán que  sigue teniendo el valor de 1234567. Al ejecutar tal consulta NO observarán el cambio de teléfono. se trata de una transacción y aún no aceptamos (commit) o  rechazamos (rollback) los cambios. si nuevamente volvemos a la  ventana en donde se inicio la transacción y tecleamos el COMMIT. Observamos que la persona con el id=57 tiene un valor de “1234567″ en  elcampo Telefono. Ahora.

 este link les servirá en su aprendizaje: http://www.Para aplicar esto de las Transacciones desde Java y de igual forma usando  MySQL.com/java/jdbc/transacciones.proactiva­calidad.htm .