Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
- Código
- ce403602
- Banca
- CESPE / CEBRASPE
- Órgão
- CNPq
- Ano
- 2024
- Cargo
- Ana CT I ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. O ciclo de uma transação iniciado por BEGIN TRANSACTION é complementado pelos comandos COMMIT e ROLLBACK — e, em alguns SGBDs, também pelo SAVEPOINT — mas não pelo comando CATCH, que não faz parte do controle de transações do SQL. O CATCH é uma estrutura de tratamento de exceções de linguagens de programação (como o TRY...CATCH do T-SQL), não um comando de transação.
O controle de transações é uma das funções centrais de um SGBD, garantindo que um conjunto de operações seja tratado como uma unidade atômica, consistente, isolada e durável — as propriedades ACID. A sublinguagem do SQL responsável por esse controle é a DTL (Data Transaction Language), também chamada de TCL (Transaction Control Language). Seus comandos principais são:
BEGIN TRANSACTION (ou BEGIN TRAN ou BEGIN): marca o início de uma transação.
COMMIT: confirma permanentemente as alterações realizadas durante a transação.
ROLLBACK: desfaz as alterações realizadas desde o início da transação (ou desde um SAVEPOINT).
SAVEPOINT: cria um ponto de salvamento intermediário, permitindo reverter apenas parte da transação.
O comando CATCH não pertence a essa lista. Ele é utilizado em conjunto com TRY em linguagens como T-SQL (SQL Server) para capturar exceções, mas não é um comando de controle de transação. A confusão entre CATCH e ROLLBACK é uma pegadinha clássica: o candidato pode associar CATCH ao tratamento de erros e achar que ele faz parte do ciclo transacional, mas o correto é que o desfazimento é feito exclusivamente pelo ROLLBACK.
Na prática, um ciclo transacional típico é:
BEGIN TRANSACTION;
-- operações de DML (INSERT, UPDATE, DELETE)
COMMIT; -- ou ROLLBACK;Se ocorrer um erro, o ROLLBACK desfaz as operações; se tudo ocorrer bem, o COMMIT as torna permanentes. O SAVEPOINT permite um controle mais granular, revertendo apenas até um ponto específico, sem encerrar a transação.
A banca explora exatamente a confusão entre o comando de desfazer (ROLLBACK) e o mecanismo de tratamento de exceções (CATCH). Guarde a fronteira: transação é controlada por BEGIN, COMMIT, ROLLBACK e SAVEPOINT; CATCH é estrutura de programação, não de transação.
A afirmativa está errada porque o comando CATCH não integra o ciclo de transações do SQL. O ciclo iniciado por BEGIN TRANSACTION é complementado por COMMIT (confirma) e ROLLBACK (desfaz), e opcionalmente por SAVEPOINT para pontos intermediários. O CATCH é uma estrutura de tratamento de exceções de linguagens como T-SQL, usada em blocos TRY...CATCH, e não tem função no controle de transações. Portanto, a afirmação de que o ciclo necessita de COMMIT, ROLLBACK e CATCH é falsa.
A banca troca o comando ROLLBACK (que desfaz transações) por CATCH (que captura exceções em linguagens de programação). O candidato que associa CATCH a "tratamento de erro" pode achar que ele faz parte do ciclo, mas o desfazimento é feito exclusivamente pelo ROLLBACK. Fique atento: CATCH não é comando de transação.
Gabarito: Errado.
Link permanente: /questoes/ce403602