You are on page 1of 14

Transacciones en MySQL

1

Se puede desactivar el autocommit ejecutando el comando: SET AUTOCOMMIT=0. 2 . Por defecto. Una vez deshabilitado el autocommit.Transacciones en MySQL Una transacción tiene dos finales posibles. tendremos que utilizar obligatoriamente el COMMIT para confirmar o ROLLBACK para deshacer la transacción. MySQL trae activado el modo autocommit. COMMIT y ROLLBACK. realizada una transacción (por ejemplo un INSERT. UPDATE o DELETE) el mismo es confirmado apenas es ejecutado. es decir.

lo ideal es utilizar START TRANSACTION. aislamiento y durabilidad (ACID) de la transacción (o conjunto de comandos) que se utilice. el motor de base de datos nos garantizará la atomicidad. Al ejecutar una transacción. consistencia. 3 .Transacciones en MySQL Si se quiere deshabilitar el autocommit para una serie de comandos.

4 . presupuesto int default null. primary key (codigo)) engine=Innodb.Transacciones en MySQL Veremos un ejemplo completo. nombre varchar (100). donde utilizaremos START TRANSACTION (no es necesario AUTOCOMMIT en 0) mysql> create table departamentos (codigo int not null default 0.

primary key (codigo)) engine=Innodb. nombre varchar (100).Transacciones en MySQL Veremos un ejemplo completo. 5 . donde utilizaremos START TRANSACTION (no es necesario AUTOCOMMIT en 0) mysql> create table departamentos (codigo int not null default 0. presupuesto int default null.

6 . nombre varchar (100). presupuesto int default null. primary key (codigo)) engine=Innodb.Transacciones en MySQL mysql> create table departamentos_externos (codigo int not null default 0.

insertaremos registros de la tabla departamentos_externos a departamentos mediante una transacción: mysql> start transaction. insert into departamentos (codigo. presupuesto)values (10. mysql> select @A:=presupuesto FROM departamentos_externos WHERE codigo= 10. nombre.'Departamento test '.@A).Transacciones en MySQL Ahora. 7 .

Transacciones en MySQL En el ejemplo anterior se guardo el presupuesto del departamento externo 10 en la variable @A y luego fue asignado al presupuesto en la tabla departamentos. 8 .

COMMIT . SELECT @A := presupuesto. START TRANSACTION. @A ). @B := codigo. nombredep. 9 . @C . presupuesto ) VALUES (@B . INSERT INTO departamentos( codigodep.Transacciones en MySQL Ejercicio 1: Realizar la siguiente transacción. @C := nombre FROM departamentos_externos WHERE codigo=33.

COMMIT. 10 . SELECT @A:=PRESUPUESTO FROM departamentos_externos WHERE codigo=11. UPDATE departamentos SET PRESUPUESTO = PRESUPUESTO + @A WHERE codigo=33.Transacciones en MySQL Ejercicio 2: START TRANSACTION.

11 .Transacciones en MySQL Ejercicio 3: Realizar una transacción DELETE.

Transacciones en MySQL Ejercicio 4: ¿Qué sucede si al final de la transacción yo pongo ROLLBACK? 12 .

13 .Transacciones en MySQL Ejercicio 5: Realizar dos transacciones en la base de datos creada por usted.

COMMIT o ROLLBACK.. 14 .Transacción . Se usa esta sentencia para indicar que se inicia una transacción.. Ejemplo: BEGIN: .Transacciones en MySQL Sentencia Begin.