Observe a abaixo escrita em PL/SQL. INSERT INTO Func VA...

Próximas questões
Com base no mesmo assunto
Q222003 Banco de Dados
Observe a abaixo escrita em PL/SQL.

INSERT INTO Func VALUES (10,'Clarice',3200);
SAVEPOINT a;
INSERT INTO Setor VALUES (13,'Sales','Hyd');
SAVEPOINT b;
INSERT INTO Grade VALUES ('III',2300,4500);
ROLLBACK TO a:

Se em seguida for executado o comando COMMIT, serão gravados os valores nas tabelas:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - somente Func.

O tema desta questão é o controle de transações em um Banco de Dados utilizando PL/SQL. Os conhecimentos necessários para resolver a questão incluem o entendimento de como os comandos SAVEPOINT, ROLLBACK e COMMIT funcionam ao gerenciar transações no banco de dados.

Os comandos SAVEPOINT são utilizados para definir pontos de salvamento dentro de uma transação, os quais podem ser usados como referência para um comando ROLLBACK. Este, por sua vez, é utilizado para desfazer todas as operações que ocorreram após o último SAVEPOINT referenciado, retornando o banco de dados ao estado em que estava no momento do SAVEPOINT. O comando COMMIT é utilizado para confirmar todas as operações pendentes numa transação, tornando-as permanentes no banco de dados.

No caso apresentado, após o primeiro INSERT, é criado um SAVEPOINT denominado "a". Um segundo INSERT é realizado, seguido da criação de um SAVEPOINT "b". Um terceiro INSERT é executado e imediatamente depois é realizado um ROLLBACK TO a, que desfaz todas as operações que ocorreram após o SAVEPOINT "a".

Portanto, após a execução do comando ROLLBACK TO a, somente a inserção na tabela Func é mantida, pois é a única operação realizada antes do SAVEPOINT "a". Quando o COMMIT é executado na sequência, ele apenas confirma as mudanças que ainda estão pendentes, ou seja, a inserção na tabela Func. As inserções nas tabelas Setor e Grade são desfeitas com o ROLLBACK e, portanto, não são gravadas.

Com base no entendimento dos comandos e do comportamento das transações, fica claro que a somente Func terá seus valores gravados após a execução do COMMIT, tornando a Alternativa B a correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo