Questão nº 61
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 61)
Transação é uma unidade lógica de trabalho e é fundamental para garantir a integridade e a consistência dos dados. Observe o seguinte script de uma transação implementada no MySQL:
```
CREATE TABLE candidato (id INT, nome CHAR (50), INDEX (id));
START TRANSACTION;
INSERT INTO candidato VALUES (1, 'JULIA');
INSERT INTO candidato VALUES (2, 'MARIA');
COMMIT;
SET autocommit = 0;
INSERT INTO candidato VALUES (3, 'SOFIA');
UPDATE candidato SET nome='ANA' WHERE id=3;
DELETE FROM candidato WHERE nome='JULIA';
ROLLBACK;
SELECT * FROM candidato;
```
Após a execução do script apresentado, a consulta retornará as colunas id e nome com os valores:
- A2,MARIA
- B1,JULIA 2,MARIA (alternativa correta)
- C1,JULIA 2,MARIA 3,SOFIA
- D1,JULIA 2,MARIA 3,ANA
- E2,MARIA 3,ANA
Resposta comentada
Gabarito Alternativa B
Uma transação é uma sequência de operações de banco de dados que são tratadas como uma única unidade lógica de trabalho. Ela garante que todas as operações dentro dela sejam concluídas com sucesso (commit) ou que nenhuma delas seja aplicada (rollback), mantendo a integridade e consistência dos dados.
- (A) Incorreta: Esta alternativa está incorreta porque a inserção de 'JULIA' foi confirmada (commit) e, portanto, não foi afetada pelo rollback posterior.
- (B) Correta: Após o
COMMIT, os registros (1, 'JULIA') e (2, 'MARIA') são salvos permanentemente no banco de dados. Em seguida,SET autocommit = 0desabilita o commit automático, fazendo com que as operações subsequentes (INSERTde SOFIA,UPDATEde ANA,DELETEde JULIA) façam parte de uma nova transação implícita. OROLLBACKdesfaz apenas as operações realizadas após o últimoCOMMITe antes doROLLBACK(ou seja, as operações feitas enquantoautocommitestava desabilitado). Assim, oINSERTde SOFIA, oUPDATEpara ANA e oDELETEde JULIA são desfeitos, e os dados confirmados anteriormente permanecem. - (C) Incorreta: Esta é a alternativa mais tentadora. A armadilha aqui é não entender que o
ROLLBACKdesfaz a inserção de 'SOFIA' (e a atualização para 'ANA'). Embora 'SOFIA' tenha sido inserida, ela não foi confirmada (commit) antes doROLLBACK, sendo, portanto, desfeita. - (D) Incorreta: Esta alternativa está incorreta porque a atualização de 'SOFIA' para 'ANA' foi desfeita pelo
ROLLBACK, pois não havia sido confirmada. - (E) Incorreta: Esta alternativa está incorreta porque a inserção de 'JULIA' foi confirmada e não foi desfeita, e a atualização para 'ANA' foi desfeita pelo
ROLLBACK.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.