1
resposta

Dúvida exercício savepoint

Não consegui entender como se chegou ao resultado de 29 no exercício abaixo.

Em todos os outros exercícios sobre savepoint consegui entender e chegar até as respostas corretas, exceto esse.

Na minha interpretação, o contador começa com 30 registros em caráter apenas informativo, já que somente será executada a instrução do segundo savepoint. Portanto os 2 registros do primeiro "savepoint a" não seriam deletados.

select count(*) from funcionarios;
-> 30

delete from funcionarios where setor_id = 10;
2 linhas deletadas

savepoint a;

insert into funcionarios values (‘rogerio’,’rodrigues’,2000);
1 linha inserida

savepoint a;

insert into funcionarios values (‘rogerio’,’rodrigues’,3500);
1 linha inserida

rollback to savepoint a;
rollback concluído
1 resposta

Oi Bruno, O segundo savepoint criado como possui o mesmo nome do primeiro irá sobreescrever o savepoint portanto ele salva a remoção das duas linhas e a adição de uma 30 - 2 + 1 = 29 Por isso quando executamos o rollback ele vai ter 29 linhas.

Abraços.