Soluciones

English version (when available)

P10.001- Crea la siguiente tabla: A (a char(2), b int(2));

create table A (a char(2), b int (2));


P10.002- Inserta los valores ‘1’ y 1 para a y b, respectivamente, en la tabla A.

insert into A (a,b) values ('1', 1);


P10.003- Comprueba los datos insertados en A

select count(*) from A; -- devuelve 1 filas


P10.004- Inicia una nueva sesión y comprueba que la inserción en A se ha realizado

select count(*) from A; -- devuelve 1 filas


P10.005- Desactiva la opción de autocommit e inserta en A los valores (‘2’, 2)

start transaction; --inicia transacción y desactiva autocommit
insert into A (a,b) values ('2', 2);


P10.006- Comprueba los datos insertados en A

select count(*) from A; -- devuelve 2 filas


P10.007- Inicia una nueva sesión y comprueba la inserción.

select count(*) from A; -- devuelve 1 fila


P10.008- Valida la inserción y comprueba los datos en las dos sesiones

-- SESION 1
commit; -- valida y fin de transacción
select count(*) from A; -- devuelve 2 filas

-- SESION 2
select count(*) from A; -- devuelve 2 filas


P10.009- Desactiva la opción de autocommit e inserta en A los valores (‘3’, 3). Comprueba si los datos se han insertado

start transaction;
insert into A (a,b) values ('3', 3);
select count(*) from A; -- devuelve 3 filas


P10.010- Inicia una nueva sesión y comprueba la inserción

select count(*) from A; -- devuleve 2 filas


P10.011- Retrocede los cambios realizados y comprueba en las dos sesiones que la inserción no ha sido realizada

--SESION 1
rollback; -- deshace y fin de transacción
select count(*) from A; -- devuleve 2 filas

-- SESION 2
select count(*) from A; -- devuleve 2 filas


P10.012- Desactiva la opción de autocommit e inserta en A los valores (‘3’, 3). Comprueba si los datos se han insertado

start transaction;
insert into A (a,b) values ('3', 3);
select count(*) from A; -- devuelve 3 filas


P10.013- Inicia una nueva sesión y comprueba la inserción

select count(*) from A; -- devuelve 2 filas


P10.014- Crea la tabla B(c char(1))

create table B (c char(1));


P10.015- Modifica A, haz que b valga 5 en todas sus filas

Update A set b=5;


P10.016- Retrocede las modificaciones realizadas. ¿Se puede? ¿Por qué?

-- No se puede retroceder. La inserción no se puede puesto que create es sentencia de definición de datos. Eso supone que se ha finalizado transacción y validados los cambios pendientes. Con el commit automático del create, autocommit se ha activado, por lo tanto la actualización también está validada y no se puede deshacer.