Questão FC373019
Em um banco de dados PostgreSQL aberto e em condições ideais, um Analista especializado em Tecnologia da Informação executou as instruções abaixo em uma tabela chamada funcionario.
Sistema de Gerenciamento de Banco de Dados (SGBD)
FCC · 2018
Em um banco de dados PostgreSQL aberto e em condições ideais, um Analista especializado em Tecnologia da Informação executou as instruções abaixo em uma tabela chamada funcionario.
BEGIN;
UPDATE funcionario SET salario = salario - 1000.00
WHERE nome = 'João';
SAVEPOINT ps1;
UPDATE funcionario SET salario = salario + 1000.00
WHERE nome = 'Paulo';
I
UPDATE salario SET salario = salario + 1000.00
WHERE nome = 'Marcos';
COMMIT;
Na segunda instrução UPDATE, o Analista aumentou o salário do funcionário Paulo em 1000.00, quando deveria aumentar o salário do funcionário Marcos nesse valor. Para cancelar a operação realizada, a lacuna I deve ser preenchida pela instrução
- CANCEL OPERATION;
- RESTORE TO ps1;
- CANCEL UPDATE;
- ROLLBACK -1;
- ROLLBACK TO ps1;
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
O comando ROLLBACK TO ps1 restaura o estado da transação ao ponto marcado por SAVEPOINT ps1, desfazendo apenas as alterações realizadas depois desse savepoint.
No enunciado, após BEGIN e o primeiro UPDATE (queda do salário de João), foi criado SAVEPOINT ps1. A instrução que aumentou o salário de Paulo é posterior a esse savepoint; portanto, ROLLBACK TO ps1 cancela exclusivamente essa alteração equivocada.
Após o rollback, permanecem as alterações feitas antes do savepoint (ou seja, a alteração em João). Em seguida pode-se aplicar corretamente o UPDATE para Marcos e finalizar com COMMIT, garantindo que apenas as mudanças desejadas sejam persistidas.
Conteúdo do catálogo FC Concursos · Atualizado em