Transacciones MYSQL
Las tablas del tipo InnoDB están estructuradas de forma distinta que MyISAM, ya que se almacenan en un sólo archivo en lugar de tres, y sus principales características son que permite trabajar con transacciones, y definir reglas de integridad referencial.
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.
Crear tabla
CREATE TABLE `transaction_example` ( id INT NOT NULL AUTO_INCREMENT , value TEXT NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB
Insertar primera fila
INSERT INTO `transaction_example` (`value`) VALUES('Example 1');
Listar filas
SELECT * FROM `transaction_example`;
Haciendo un rollback
En este ejemplo, realizaremos una operación de INSERT pero que no surtirá efecto, ya que al hacer un ROLLBACK los cambios no se ejecutan.
BEGIN;
INSERT INTO `transaction_example` (`value`) VALUES('Example 2');
SELECT * FROM `transaction_example`;
ROLLBACK;
Realizando los cambios
Para realizar un cambio de forma real, podremos hacerlo de la siguiente forma.
BEGIN;
INSERT INTO `transaction_example` (`value`) VALUES('Example 3');
SELECT * FROM `transaction_example`;
COMMIT;
Realizando los cambios e intentando un rollback
Al hacer un COMMIT antes del ROLLBACK, es imposible volver atrás ya que los cambios han sido realizados.
BEGIN;
INSERT INTO `transaction_example` (`value`) VALUES('Example 4');
SELECT * FROM `transaction_example`;
COMMIT;
ROLLBACK;