Questão nº 85
Questão de Tecnologia da Informação · FGV CGE-SP 2025 (nº 85)
Um desenvolvedor inicia uma série de comandos DML (Data Manipulation Language) em uma sessão do SGBD.
Ele executou um UPDATE seguido de um DELETE. Após a execução, ele percebeu que o resultado da alteração estava incorreto e decidiu que as modificações feitas na sessão não deviam ser persistidas no banco de dados.
Assinale a opção que indica o comando SQL Transacional que o desenvolvedor deve executar para desfazer todas as modificações realizadas desde o início da transação na sessão atual, e a principal característica que define uma transação em andamento na regra ACID.
- ACOMMIT / Durabilidade.
- BCHECKPOINT / Isolamento.
- CSAVEPOINT seguido de ROLLBACK TO SAVEPOINT / Consistência.
- DROLLBACK / Atomicidade. (alternativa correta)
- EVACUUM / Integridade.
Resposta comentada
Gabarito Alternativa D
Uma transação em banco de dados é um conjunto de operações (como UPDATE, DELETE, INSERT) que são tratadas como uma única unidade lógica de trabalho: ou todas são concluídas com sucesso e persistidas, ou nenhuma delas é. As propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade) garantem a confiabilidade das transações.
(A) Incorreta: `COMMIT` serve para confirmar e salvar permanentemente as alterações no banco de dados, o oposto do que o desenvolvedor deseja. Durabilidade garante que, uma vez confirmadas, as alterações permaneçam mesmo após falhas.
(B) Incorreta: `CHECKPOINT` é um processo interno do SGBD para sincronizar dados em memória com o disco, não um comando do desenvolvedor para desfazer operações. Isolamento garante que transações concorrentes não interfiram umas nas outras.
(C) Incorreta: `SAVEPOINT` cria um ponto de salvamento dentro de uma transação, permitindo `ROLLBACK TO SAVEPOINT` para desfazer operações apenas até aquele ponto. No entanto, a questão pede para desfazer todas as modificações desde o início da transação, o que é feito por um `ROLLBACK` simples. Consistência assegura que a transação leve o banco de dados de um estado válido para outro estado válido. A armadilha é que `ROLLBACK TO SAVEPOINT` é um tipo de rollback, mas não o mais direto para desfazer tudo desde o começo da transação.
(D) Correta: `ROLLBACK` é o comando SQL transacional que desfaz todas as modificações realizadas na transação atual, retornando o banco de dados ao estado em que se encontrava antes do início da transação. A Atomicidade (ou "tudo ou nada") é a propriedade ACID que garante que uma transação seja tratada como uma unidade indivisível: ou todas as suas operações são executadas com sucesso e persistidas, ou nenhuma delas é, sendo completamente desfeitas em caso de falha ou `ROLLBACK`.
(E) Incorreta: `VACUUM` (comum em PostgreSQL) é um comando de manutenção para recuperar espaço em disco e otimizar o banco de dados, não para desfazer operações DML. Integridade refere-se à validade e precisão dos dados, garantida por restrições (chaves primárias, estrangeiras, etc.).
Fonte: FGV CGE-SP 2025 Auditor Estadual de Controle - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.