Questão de Banco de Dados — Transações (Locks, ACID, etc.) — VUNESP 2023
- Código
- vu196692
- Banca
- VUNESP
- Órgão
- Pref Campinas
- Ano
- 2023
- Cargo
- Ana TI ( )
- AROLLBACK;
- BGRANT;
- CPURGE;
- DREVOKE;
- EDROP OPERATOR;
GabaritoA — ROLLBACK;
Gabarito: letra A. O comando ROLLBACK é o responsável por desfazer as operações realizadas em uma transação, restaurando o banco de dados ao estado anterior ao início dela. Essa é a função clássica do comando, prevista no padrão SQL e implementada no Oracle 21c, que garante a propriedade de atomicidade das transações.
Uma transação é uma unidade lógica de trabalho composta por uma ou mais operações de banco de dados (inserções, atualizações, exclusões). Para garantir a confiabilidade, as transações seguem as propriedades ACID: Atomicidade, Consistência, Isolamento e Durabilidade. A atomicidade assegura que a transação seja executada por completo ou não seja executada — ou seja, "tudo ou nada". Quando todas as operações são concluídas com sucesso, o comando COMMIT efetiva as alterações de forma permanente. Por outro lado, se ocorrer qualquer falha ou se o usuário decidir desfazer, o comando ROLLBACK reverte todas as operações da transação, retornando o banco ao estado anterior.
Na prática, imagine uma transferência bancária de R$ 100 da conta A para a conta B. Essa operação envolve várias etapas: debitar R$ 100 da conta A e creditar R$ 100 na conta B. Se, após o débito na conta A, ocorrer uma falha antes do crédito na conta B, a transação estaria incompleta e o banco ficaria inconsistente. O ROLLBACK desfaz o débito, garantindo que nenhuma das operações seja aplicada parcialmente. Somente com o COMMIT as alterações são confirmadas e persistidas.
É importante distinguir o ROLLBACK de outros comandos SQL. O COMMIT finaliza a transação com sucesso, salvando as alterações. O SAVEPOINT cria um ponto intermediário dentro da transação, permitindo um rollback parcial até aquele ponto, sem desfazer toda a transação. Já os comandos GRANT e REVOKE pertencem à sublinguagem DCL (Data Control Language), responsável por controlar permissões de acesso. O PURGE é usado no Oracle para remover objetos da lixeira (recycle bin), e DROP OPERATOR é um comando DDL que remove um operador definido pelo usuário.
A pegadinha desta questão está em confundir o ROLLBACK com comandos de controle de acesso ou de definição de dados. O candidato que não domina a classificação dos comandos SQL pode se perder entre as alternativas. A chave é lembrar que o ROLLBACK é um comando de controle de transação (TCL), cuja função é desfazer operações não confirmadas.
Comando | Categoria | Função principal | Desfaz transação? |
|---|---|---|---|
ROLLBACK | TCL (Controle de Transação) | Reverte operações não confirmadas de uma transação | ✅ Sim |
COMMIT | TCL (Controle de Transação) | Efetiva permanentemente as alterações da transação | ❌ Não |
SAVEPOINT | TCL (Controle de Transação) | Cria ponto intermediário para rollback parcial | ❌ Não (marca ponto) |
GRANT | DCL (Controle de Dados) | Concede privilégios de acesso a usuários/roles | ❌ Não |
REVOKE | DCL (Controle de Dados) | Remove privilégios de acesso de usuários/roles | ❌ Não |
PURGE | DDL (Definição de Dados) | Remove permanentemente objetos da lixeira do Oracle | ❌ Não |
DROP OPERATOR | DDL (Definição de Dados) | Remove operador definido pelo usuário | ❌ Não |
O comando ROLLBACK é exatamente o que desfaz as operações de uma transação. Ele reverte todas as alterações feitas desde o início da transação (ou desde o último SAVEPOINT), restaurando o banco ao estado anterior. Essa é a função que garante a atomicidade: se algo der errado, a transação inteira é desfeita.
O comando GRANT é um comando da sublinguagem DCL (Data Control Language), utilizado para conceder privilégios de acesso a usuários ou roles. Ele não tem relação com o controle de transações e não desfaz operações de banco de dados.
O comando PURGE é específico do Oracle e serve para remover permanentemente objetos da lixeira (recycle bin), como tabelas ou índices que foram descartados. Ele não desfaz operações de uma transação; pelo contrário, é uma operação de limpeza de objetos.
O comando REVOKE é o oposto do GRANT: ele remove privilégios de acesso de usuários ou roles. Também pertence à sublinguagem DCL e não tem qualquer relação com o desfazer de transações.
O comando DROP OPERATOR é um comando DDL (Data Definition Language) usado para remover um operador definido pelo usuário no banco de dados. Ele altera a estrutura do banco, não o estado de uma transação.
A regra de ouro para a prova: ROLLBACK desfaz, COMMIT confirma, SAVEPOINT marca um ponto intermediário. Os comandos de acesso (GRANT/REVOKE) e de definição (DROP, PURGE) estão em outra categoria e nunca desfazem transações.
Gabarito: letra A
Link permanente: /questoes/vu196692