Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — FGV 2023

Banco de DadosMySQL
Código
fg063586
Banca
FGV
Órgão
DPE-RS
Ano
2023
Nível
Superior
Cargo
Analista - Área de Apoio Especializado - Tecnologia da Informação - Banco de Dados
Em banco de dados, uma transação é uma unidade lógica de trabalho. Observe o seguinte script de uma transação implementada no MYSQL:CREATE TABLE cliente (id INT, nome CHAR (50), INDEX (id)); START TRANSACTION; INSERT INTO cliente VALUES (1, 'LUCAS'); COMMIT; SET autocommit = 0; INSERT INTO cliente VALUES (2, 'MARCOS'); INSERT INTO cliente VALUES (3, 'PAULO'); UPDATE cliente SET nome='TIAGO' WHERE id=3; DELETE FROM cliente WHERE nome='LUCAS'; ROLLBACK; SELECT * FROM cliente; Após a execução do script apresentado, a consulta retornará as colunas id e nome com os valores:
  1. A1 LUCAS
  2. B1 LUCAS2 MARCOS3 PAULO
  3. C1 LUCAS2 MARCOS3 TIAGO
  4. D2 MARCOS3 TIAGO
  5. Enull null
Revelar gabarito e comentário

GabaritoA — 1 LUCAS

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 MySQL: efeito do ROLLBACK

Gabarito: letra A. Após o COMMIT da primeira inserção (LUCAS), o ROLLBACK desfaz apenas as operações seguintes (INSERT de MARCOS e PAULO, UPDATE, DELETE), pois o autocommit=0 iniciou uma nova transação implícita. Assim, apenas a linha com id=1 e nome='LUCAS' permanece no banco. A consulta SELECT final retorna exatamente essa linha.

A banca testa o entendimento do escopo das transações no MySQL. A chave é perceber que o ROLLBACK não retroage além do último COMMIT – a transação explícita (START…COMMIT) já foi confirmada, e o autocommit=0 apenas inicia uma nova transação implícita, que é desfeita pelo ROLLBACK.

Alternativa A — ✅ Correta ⟵ GABARITO

A única linha confirmada (commitada) é o INSERT de LUCAS. As demais operações foram revertidas. Portanto, a consulta retorna exatamente essa linha.

Alternativa B — ❌ Incorreta

Afirma que as linhas 2 (MARCOS) e 3 (PAULO) também aparecem. Ignora que o ROLLBACK desfez esses inserts, pois estavam na transação implícita não confirmada.

Alternativa C — ❌ Incorreta

Além de incluir as linhas 2 e 3, mostra o nome de id=3 como TIAGO (resultado do UPDATE), que também foi desfeito pelo ROLLBACK.

Alternativa D — ❌ Incorreta

Mostra apenas as linhas 2 e 3, ignorando a linha 1 (commitada) e mantendo o UPDATE não desfeito.

Alternativa E — ❌ Incorreta

Sugere que a tabela ficou vazia (null null). O ROLLBACK não afeta o primeiro INSERT que já foi commitado.

NÃO CAIA NESSA!

A confusão comum é achar que o ROLLBACK desfaz toda a transação desde o começo, mas ele só atinge operações a partir do último COMMIT ou do início da transação implícita. O primeiro COMMIT divide o script em duas partes: a primeira já está persistida, a segunda (com autocommit=0) é revertida.

Gabarito: letra A.

Link permanente: /questoes/fg063586