Em banco de dados, uma transação é uma unidade lógica de tr...

Próximas questões
Com base no mesmo assunto
Q2220435 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: 

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a letra A. Para entender por que essa é a resposta certa, é necessário compreender o conceito de transações em bancos de dados e o funcionamento do controle de transações no MySQL.

Uma transação é uma sequência de operações tratadas como uma única unidade lógica de trabalho. As transações respeitam as propriedades ACID, que são Atomicidade, Consistência, Isolamento e Durabilidade. No script em questão, a primeira transação é iniciada com o comando START TRANSACTION e confirmada com o comando COMMIT. Isso significa que as operações dentro dessa transação serão efetivamente aplicadas ao banco de dados.

O comando SET autocommit = 0 desativa a autoconfirmação, fazendo com que as alterações precisem ser explicitamente confirmadas com um COMMIT para serem permanentes. No entanto, após essa linha, todas as operações são revertidas com o comando ROLLBACK, que desfaz qualquer operação desde o último COMMIT.

Portanto, o INSERT inicial com os valores (1, 'LUCAS') é a única operação que persiste, pois foi confirmada antes de desativar o autocommit e antes de qualquer ROLLBACK. Todas as operações após o SET autocommit = 0 são anuladas pelo ROLLBACK posterior. O SELECT final retornará o estado da tabela após a execução do COMMIT e antes de qualquer operação desfeita pelo ROLLBACK, ou seja, apenas o registro com id 1 e nome LUCAS.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Cria a tabela

CREATE TABLE cliente (

  id INT,

  nome CHAR(50),

  INDEX (id)

);

Esta instrução cria uma tabela chamada "cliente" com duas colunas: "id" do tipo inteiro e "nome" do tipo caractere com um comprimento máximo de 50 caracteres. Também cria um índice na coluna "id".

START TRANSACTION;

Isso inicia uma transação. Todas as instruções SQL a seguir serão executadas dentro dessa transação até que seja encontrada uma instrução COMMIT ou ROLLBACK.

INSERT INTO cliente VALUES (1, 'LUCAS');

Essa instrução insere uma linha na tabela "cliente" com id=1 e nome='LUCAS'.

COMMIT;

Essa instrução confirma a transação, o que significa que todas as alterações feitas dentro da transação são permanentemente salvas no banco de dados.

SET autocommit = 0;

Essa instrução desativa o autocommit, o que significa que cada instrução SQL subsequente não será automaticamente confirmada. As alterações só serão salvas quando você usar explicitamente a instrução COMMIT.

INSERT INTO cliente VALUES (2, 'MARCOS');

INSERT INTO cliente VALUES (3, 'PAULO');

Essas instruções inserem mais duas linhas na tabela "cliente" com id=2 e nome='MARCOS', e id=3 e nome='PAULO', respectivamente.

UPDATE cliente SET nome='TIAGO' WHERE id=3;

Essa instrução atualiza o valor da coluna "nome" para 'TIAGO' na linha em que o id=3 (linha do Paulo).

DELETE FROM cliente WHERE nome='LUCAS';

Essa instrução deleta todas as linhas da tabela "cliente" em que o nome é 'LUCAS'.

ROLLBACK;

Essa instrução cancela a transação, o que significa que todas as alterações feitas durante a transação são desfeitas, e o banco de dados volta ao estado anterior à transação.

Selecionar e Exibir os Dados da Tabela:

SELECT * FROM cliente;

Resultado Esperado:

Se você executar essas instruções em ordem, o resultado esperado será o seguinte:

id nome

1 LUCAS

Após a instrução ROLLBACK, as alterações feitas durante a transação serão desfeitas, e a tabela terá apenas a linha inicial com id=1 e nome='LUCAS'.

Gabarito letra A

Isso ocorre porque a transação insere o registro com id=1 e nome='LUCAS', e em seguida é confirmada com o comando COMMIT. As demais operações (INSERT, UPDATE, DELETE) são realizadas após o COMMIT, mas são desfeitas pelo comando ROLLBACK, que cancela a transação. Portanto, apenas o registro inserido antes do COMMIT permanece na tabela. A resposta correta é a letra A - 1 LUCAS.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo