Analise o seguinte trecho de comandos SQL executados em um sistema de gerenciamento de banco de dados relacional, de acordo com o padrão ANSI/ISO SQL (ISO/IEC 9075):
BEGIN TRANSACTION; UPDATE Conta SET saldo = saldo - 500 WHERE id_conta = 1; UPDATE Conta SET saldo = saldo + 500 WHERE id_conta = 2; ROLLBACK;
Considerando os conceitos de transações em banco de dados, assinale a alternativa correta.
AApenas a primeira atualização será desfeita, mantendo a segunda alteração.
BO comando ROLLBACK executa novamente todas as operações da transação.
CAs alterações serão mantidas apenas se houver erro na execução das instruções.
DOs valores das contas 1 e 2 serão modificados permanentemente após a execução das instruções.
ENenhuma das alterações será mantida, pois o comando ROLLBACK desfaz todas as operações realizadas na transação.
Revelar gabarito e comentário▾
GabaritoE — Nenhuma das alterações será mantida, pois o comando ROLLBACK desfaz todas as operações realizadas na transação.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Transações em Banco de Dados: COMMIT e ROLLBACK
Gabarito: letra E. O comando ROLLBACK desfaz todas as operações realizadas desde o início da transação (marcado pelo BEGIN TRANSACTION), restaurando o banco de dados ao último estado confirmado. Como o trecho executa dois UPDATEs e depois um ROLLBACK, nenhuma das alterações será mantida — é exatamente o que a alternativa E afirma, e é o comportamento padrão do controle de transações no SQL (ISO/IEC 9075).
Uma transação é uma unidade lógica de trabalho: um conjunto de operações sobre o banco de dados que deve ser executado de forma atômica — ou seja, ou todas as operações são aplicadas, ou nenhuma delas é. Essa é a propriedade de atomicidade do modelo ACID. Para controlar esse comportamento, o SQL oferece comandos específicos: BEGIN TRANSACTION (inicia a transação), COMMIT (confirma permanentemente as alterações) e ROLLBACK (desfaz as alterações).
O COMMIT é o comando que salva permanentemente as mudanças feitas durante a transação. Enquanto a transação não é confirmada, as alterações são visíveis apenas para a própria transação (isolamento) e podem ser revertidas. Já o ROLLBACK é o comando que restaura o banco de dados ao último estado confirmado, desfazendo todas as operações executadas desde o BEGIN TRANSACTION (ou desde um SAVEPOINT, se usado).
No trecho da questão, temos:
BEGIN TRANSACTION;
UPDATE Conta SET saldo = saldo - 500 WHERE id_conta = 1;
UPDATE Conta SET saldo = saldo + 500 WHERE id_conta = 2;
ROLLBACK;
A transação começa, executa duas atualizações (débito na conta 1 e crédito na conta 2) e, em seguida, é finalizada com ROLLBACK. Isso significa que ambas as alterações são desfeitas — o banco de dados volta ao estado em que estava antes do BEGIN TRANSACTION. Nenhuma das contas é modificada permanentemente.
A pegadinha clássica aqui é o candidato pensar que o ROLLBACK desfaz apenas a última operação, ou que as alterações são mantidas porque não houve erro. Mas o ROLLBACK é global: ele desfaz tudo o que foi feito na transação, independentemente de ter havido erro ou não. O COMMIT é que seria necessário para manter as alterações.
Guarde a fronteira decisiva: COMMIT = confirma e mantém tudo; ROLLBACK = desfaz tudo. É exatamente nessa distinção que as alternativas se dividem.
1BEGIN TRANSACTION
2UPDATEs (débito/crédito)
3COMMIT → mantém tudo
4ROLLBACK → desfaz tudo
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que apenas a primeira atualização será desfeita, mantendo a segunda. Isso é falso: o ROLLBACK desfaz todas as operações da transação, não apenas uma. As duas atualizações (débito e crédito) são revertidas. A alternativa confunde o efeito do ROLLBACK com o de um SAVEPOINT, que permitiria reverter apenas até um ponto específico — mas aqui não há SAVEPOINT.
Alternativa B — ❌ Incorreta
Afirma que o ROLLBACK executa novamente todas as operações da transação. Isso é um erro conceitual: o ROLLBACKdesfaz as operações, não as reexecuta. O comando que executa novamente operações não existe no controle de transações padrão; o ROLLBACK restaura o estado anterior ao BEGIN TRANSACTION.
Alternativa C — ❌ Incorreta
Afirma que as alterações serão mantidas apenas se houver erro na execução das instruções. Isso inverte completamente a lógica: as alterações são mantidas quando a transação é confirmada com COMMIT (sem erro), e são desfeitas com ROLLBACK (que pode ser usado justamente quando há erro, mas também pode ser usado voluntariamente). A alternativa troca o papel dos comandos.
Alternativa D — ❌ Incorreta
Afirma que os valores das contas 1 e 2 serão modificados permanentemente. Isso só ocorreria se a transação fosse finalizada com COMMIT. Como o trecho usa ROLLBACK, as alterações são desfeitas e os valores voltam ao estado original. A alternativa ignora o efeito do ROLLBACK.
Alternativa E — ✅ Correta ⟵ GABARITO
Afirma que nenhuma das alterações será mantida, pois o ROLLBACK desfaz todas as operações realizadas na transação. Isso está correto: o ROLLBACK restaura o banco de dados ao último estado confirmado, desfazendo os dois UPDATEs. É exatamente o comportamento esperado do comando.
NÃO CAIA NESSA!
A banca explora a confusão entre COMMIT e ROLLBACK. O candidato pode pensar que, como não houve erro, as alterações seriam mantidas — mas o ROLLBACK desfaz tudo, independentemente de erro. Lembre-se: COMMIT confirma e mantém; ROLLBACK desfaz tudo. Com treino, você enxerga essa troca de longe 💪