FC ConcursosFC Concursos

Questão FC369530

Observe a transação SQL a seguir. BEGIN; INSERT INTO Parte (ParteID, NomeParte) VALUES (1, 'Mariana Souza'); SAVEPOINT insercao; INSERT INTO Parte (ParteID, NomeParte) VALUES (2, '

Sistema de Gerenciamento de Banco de Dados (SGBD)

FGV · 2025

Observe a transação SQL a seguir.

 

BEGIN;

INSERT INTO Parte (ParteID, NomeParte)

   VALUES (1, 'Mariana Souza');

SAVEPOINT insercao;

INSERT INTO Parte (ParteID, NomeParte)

   VALUES (2, 'Joca Silva');

SAVEPOINT insercao;

INSERT INTO Parte (ParteID, NomeParte)

   VALUES (3, 'Luiz Almeira');

ROLLBACK TO SAVEPOINT insercao;

RELEASE SAVEPOINT insercao;

ROLLBACK TO SAVEPOINT insercao;

SELECT * FROM Parte;

COMMIT;

 

No PostgreSQL, após a execução da transação SQL, o(s) registro(s) da tabela Parte é(são):

  1. (1, 'Mariana Souza')
  2. (2, 'Joca Silva')
  3. (3, 'Luiz Almeira')
  4. (1, 'Mariana Souza')

    (2, 'Joca Silva')

  5. (2, 'Joca Silva')

    (3, 'Luiz Almeira')

Mostrar resposta e comentário

Gabarito

A

Comentário do professor

Ao executar a transação, o que fica gravado é apenas (1, 'Mariana Souza').

Fluxo resumido: após o primeiro INSERT é criado o SAVEPOINT (estado A). Em seguida, cria-se outro SAVEPOINT com o mesmo nome depois do segundo INSERT (estado B) — o PostgreSQL permite empilhar savepoints com o mesmo identificador.

Depois do terceiro INSERT, o comando ROLLBACK TO SAVEPOINT retorna ao estado B, desfazendo apenas o terceiro INSERT. O RELEASE SAVEPOINT remove o savepoint mais recente (estado B). O seguinte ROLLBACK TO SAVEPOINT aplica-se então ao savepoint anterior (estado A), desfazendo o segundo INSERT.

Assim, antes do COMMIT resta somente o primeiro registro, que é então confirmado.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo