Considere que um banco de dados MySQL estava executa...

Próximas questões
Com base no mesmo assunto
Q508544 Banco de Dados
Considere que um banco de dados MySQL estava executando as seguintes instruções em SQL:

#1: START TRANSACTION.
#2: UPDATE contas SET saldo = saldo - @mov WHERE id=1023.
#3: UPDATE contas SET saldo = saldo + @mov WHERE id=3234.
#4: COMMIT.

Após a execução do segundo comando, o sistema sofreu uma falha que impossibilitou a execução dos demais comandos. Assim, é correto afirmar:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B

A compreensão correta dessa questão exige o conhecimento de como funcionam as transações no MySQL. Uma transação é um conjunto de operações que seguem o princípio ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Inicia-se com o comando START TRANSACTION e pode terminar com COMMIT, para salvar as alterações, ou ROLLBACK, para desfazê-las.

Na situação apresentada, após a execução do comando START TRANSACTION, duas atualizações foram aplicadas à tabela contas. Contudo, antes que a transação fosse concluída com o comando COMMIT, houve uma falha de sistema. Em sistemas de banco de dados que seguem as propriedades ACID, como o MySQL, a falha antes do COMMIT faz com que todas as operações da transação atual sejam automaticamente desfeitas, para manter a consistência dos dados.

A correta é a alternativa B que menciona que "O banco de dados não sofrerá qualquer alteração dos seus dados após a falha". Isso se deve ao fato de que sem o COMMIT, as alterações ainda não são permanentes e, em caso de falha, são integralmente revertidas. Portanto, o saldo nas contas mencionadas retornará aos valores originais, como se as instruções UPDATE nunca tivessem sido executadas.

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

sem commit, sem mudança

Clique para visualizar este comentário

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