Questão nº 44
Questão de Tecnologia da Informação · FCC TRT23 2022 (nº 44)
Considere o conjunto de instruções abaixo, executadas na tabela colaborador de um banco de dados Oracle aberto e em condições ideais.
```
INSERT INTO colaborador(matricula, nome) VALUES (5, 'Manoel da Silva');
SAVEPOINT a1;
INSERT INTO colaborador(matricula, nome) VALUES (6, 'Andrea Teixeira');
INSERT INTO colaborador(matricula, nome) VALUES (7, 'Marcos Moraes');
```
Se na sequência forem executados os comandos `ROLLBACK TO a1;` e `COMMIT;`,
- Aapenas o insert do colaborador Marcos Moraes será realizado.
- Btodos os inserts serão cancelados.
- Capenas os inserts dos colaboradores Andrea Teixeira e Marcos Moraes serão realizados.
- Dtodos os inserts serão realizados.
- Eapenas o insert referente ao colaborador Manoel da Silva será realizado. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Transações são conjuntos de operações que devem ser tratadas como uma única unidade: ou todas são concluídas com sucesso (COMMIT), ou nenhuma delas é (ROLLBACK). Um SAVEPOINT marca um ponto intermediário dentro de uma transação, permitindo que você desfaça (ROLLBACK TO) apenas as operações realizadas após aquele ponto, sem cancelar a transação inteira.
- INSERT INTO colaborador(matricula, nome) VALUES (5, 'Manoel da Silva'); - O colaborador 5 é inserido. A transação é iniciada.
- SAVEPOINT a1; - Um ponto de salvamento
a1é criado. O colaborador 5 está na transação. - INSERT INTO colaborador(matricula, nome) VALUES (6, 'Andrea Teixeira'); - O colaborador 6 é inserido.
- INSERT INTO colaborador(matricula, nome) VALUES (7, 'Marcos Moraes'); - O colaborador 7 é inserido.
- ROLLBACK TO a1; - Este comando desfaz todas as operações que ocorreram após o
SAVEPOINT a1. Portanto, as inserções dos colaboradores 6 e 7 são desfeitas. A inserção do colaborador 5, que ocorreu antes dea1, permanece na transação. - COMMIT; - Este comando torna permanentes todas as alterações que não foram desfeitas na transação. Neste ponto, apenas a inserção do colaborador 5 permanece, então ela é confirmada no banco de dados.
(A) Incorreta: O insert do colaborador Marcos Moraes (7) foi desfeito pelo ROLLBACK TO a1;.
(B) Incorreta: Esta é a armadilha. Um ROLLBACK sem TO a1 cancelaria tudo, mas ROLLBACK TO a1 cancela apenas as operações após o a1. O insert do colaborador Manoel da Silva (5) ocorreu antes do SAVEPOINT a1 e, portanto, não foi cancelado.
(C) Incorreta: Os inserts dos colaboradores Andrea Teixeira (6) e Marcos Moraes (7) foram desfeitos pelo ROLLBACK TO a1;.
(D) Incorreta: Os inserts dos colaboradores Andrea Teixeira (6) e Marcos Moraes (7) foram desfeitos pelo ROLLBACK TO a1;.
(E) Correta: O insert do colaborador Manoel da Silva (5) ocorreu antes do SAVEPOINT a1. O comando ROLLBACK TO a1; desfez apenas as operações posteriores a a1 (inserções 6 e 7). O COMMIT; finalizou a transação, tornando permanente a única alteração que restou: a inserção do colaborador 5.
Fonte: FCC TRT23 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.