Relacione cada tipo de transação disponível no SQL Server às suas características correspondentes.I) Transações explícitasII) Transações implícitasIII) Transações de escopo de lotea) Cada transação é iniciada com a instrução BEGIN TRANSACTION e finalizada somente com uma instrução COMMIT ou ROLLBACK.b) Aplicável apenas a MARS. A transação que não é confirmada ou revertida quando um lote é concluído, será revertida automaticamente pelo SQL Server.c) Uma transação nova é iniciada quando a transação anterior for concluída, mas cada transação é somente concluída com uma instrução COMMIT ou ROLLBACK.
AI - a; II - b; III - c.
BI - a; II - c; III - b.
CI - c; II - b; III - a.
DI - c; II - a; III - b.
EI - b; II - a; III - c.
Revelar gabarito e comentário▾
GabaritoB — I - a; II - c; III - b.
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 no SQL Server: explícitas, implícitas e de escopo de lote
Gabarito: letra B. A transação explícita é delimitada por BEGIN TRANSACTION e encerrada por COMMIT ou ROLLBACK (característica a); a implícita inicia uma nova transação automaticamente quando a anterior termina, mas exige COMMIT/ROLLBACK explícitos (característica c); e a de escopo de lote, aplicável apenas ao MARS (Multiple Active Result Sets), é revertida automaticamente se o lote terminar sem confirmação (característica b). A correlação correta é, portanto, I-a; II-c; III-b.
Uma transação é uma unidade lógica de trabalho que agrupa operações sobre o banco de dados, tratadas como um bloco único e indivisível — ou seja, ou todas as operações são efetivadas, ou nenhuma delas é. Essa é a propriedade da atomicidade, garantida pelos comandos COMMIT (confirma e torna permanentes as alterações) e ROLLBACK (desfaz as alterações, retornando o banco ao estado anterior). O SQL Server, como a maioria dos SGBDs relacionais, oferece diferentes modos de gerenciar essas transações, e é exatamente essa distinção que a questão explora.
A transação explícita é a forma mais tradicional e controlada: o programador delimita claramente o início com BEGIN TRANSACTION (ou BEGIN TRAN) e o fim com COMMIT ou ROLLBACK. Nenhuma instrução entre esses marcos é efetivada definitivamente até que um desses comandos de encerramento seja executado. É o modelo que dá ao desenvolvedor o controle total sobre o escopo da unidade de trabalho.
A transação implícita opera de forma diferente: quando a opção IMPLICIT_TRANSACTIONS está ativada, o SQL Server inicia automaticamente uma transação antes de cada instrução de manipulação de dados (como INSERT, UPDATE, DELETE). No entanto, a transação não é concluída automaticamente — o programador ainda precisa executar COMMIT ou ROLLBACK para finalizá-la. Quando uma transação é concluída, a próxima instrução DML inicia uma nova transação automaticamente. É um meio-termo entre o controle total (explícita) e a automação total (autocommit).
A transação de escopo de lote é um conceito específico do SQL Server, relacionado ao MARS (Multiple Active Result Sets). Com MARS habilitado, é possível ter múltiplos resultados ativos na mesma conexão. Nesse contexto, uma transação iniciada dentro de um lote (batch) que não seja confirmada ou revertida até o fim do lote é automaticamente revertida pelo SQL Server. Isso difere das outras duas, pois aqui o encerramento é automático, sem exigir um COMMIT ou ROLLBACK explícito do programador.
A pegadinha da banca está em inverter as características b e c: a transação implícita não é revertida automaticamente ao final do lote — ela exige COMMIT/ROLLBACK explícitos, assim como a explícita. A reversão automática é exclusiva da transação de escopo de lote, que só se aplica ao MARS. Guarde essa fronteira: implícita = inicia sozinha, mas termina com comando explícito; escopo de lote = inicia e termina automaticamente com o lote.
Tipo de transação
Início
Término
Aplicável a
Explícita
BEGIN TRANSACTION
COMMIT/ROLLBACK explícitos
Geral
Implícita
Automático (após a anterior)
COMMIT/ROLLBACK explícitos
Geral
Escopo de lote
Automático (com o lote)
Reversão automática ao fim do lote
Apenas MARS
Alternativa A — ❌ Incorreta
Correlaciona II com b (escopo de lote) e III com c (implícita), invertendo as duas. A característica b (reversão automática ao fim do lote, aplicável ao MARS) pertence à transação de escopo de lote (III), e a característica c (nova transação iniciada quando a anterior termina, mas com COMMIT/ROLLBACK explícitos) pertence à transação implícita (II).
Alternativa B — ✅ Correta ⟵ GABARITO
Correlaciona corretamente: I (explícita) com a — iniciada por BEGIN TRANSACTION e finalizada por COMMIT/ROLLBACK; II (implícita) com c — nova transação iniciada quando a anterior é concluída, mas cada uma exige COMMIT/ROLLBACK explícitos; III (escopo de lote) com b — aplicável apenas ao MARS, com reversão automática se o lote terminar sem confirmação.
Alternativa C — ❌ Incorreta
Correlaciona I com c (implícita) e III com a (explícita). A transação explícita é delimitada por BEGIN TRANSACTION e COMMIT/ROLLBACK (característica a), não pela característica c, que descreve o comportamento da transação implícita.
Alternativa D — ❌ Incorreta
Correlaciona I com c (implícita) e II com a (explícita). A transação explícita é delimitada por BEGIN TRANSACTION e COMMIT/ROLLBACK (característica a), e a transação implícita é descrita pela característica c — a correlação está invertida.
Alternativa E — ❌ Incorreta
Correlaciona I com b (escopo de lote) e II com a (explícita). A transação explícita é delimitada por BEGIN TRANSACTION e COMMIT/ROLLBACK (característica a), e a característica b (reversão automática ao fim do lote, MARS) pertence à transação de escopo de lote (III).
NÃO CAIA NESSA!
Para fixar, monte o quadro mental: explícita = controle total (você inicia e termina); implícita = inicia sozinha, mas você termina; escopo de lote = o lote inicia e termina por você (reversão automática, só com MARS). Na prova, a banca adora trocar as duas últimas — lembre-se de que a implícita nunca é revertida automaticamente; ela exige COMMIT/ROLLBACK explícitos.