Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas e Comandos em SQL
Código
ce403602
Banca
CESPE / CEBRASPE
Órgão
CNPq
Ano
2024
Cargo
Ana CT I ( )
Julgue o item a seguir, relativos a sistema gerenciador de banco de dados (SGBD).   A fim de garantir o desfazimento das operações em um SGBD, o ciclo iniciado pelo comando BEGIN TRANSACTION necessita do complemento dos comandos COMMIT, ROLLBACK e CATCH.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Controle de Transações em SGBD: BEGIN, COMMIT, ROLLBACK e SAVEPOINT

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.

  1. 1BEGIN TRANSACTION
  2. 2Operações DML
  3. 3COMMIT (confirma)
  4. 4ROLLBACK (desfaz)
LEVEL · soulevel.com.br

Item — ❌ Errado

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.

NÃO CAIA NESSA!

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