Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

Declaração MySQL ROLLBACK

A instrução `ROLLBACK` no MySQL é usada para desfazer transações que ainda não foram confirmadas no banco de dados. Ele permite que você reverta o banco de dados para o último estado confirmado, garantindo a integridade dos dados em caso de erros ou alterações não intencionais.

Uso

O `ROLLBACK` é utilizado no controle de transações para cancelar uma transação e restaurar o banco de dados ao seu estado anterior. Essa instrução é particularmente útil quando ocorre um erro durante uma transação, permitindo que você reverta todas as alterações feitas após o último `COMMIT`. As transações são sequências de operações executadas como uma única unidade lógica de trabalho, e o `COMMIT` é usado para tornar permanentes todas as alterações, enquanto o `ROLLBACK` as desfaz.

ROLLBACK;

Nessa sintaxe, `ROLLBACK` simplesmente reverte todas as operações realizadas na transação atual. Observe que o `ROLLBACK` só é aplicável em mecanismos de armazenamento que suportam transações, como o InnoDB, e não é aplicável em mecanismos de armazenamento não transacionais, como o MyISAM.

Exemplos

1. Reversão básica

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
ROLLBACK;

Nesse exemplo, a operação `UPDATE` é revertida, de modo que o `balance` permanece inalterado devido ao `ROLLBACK`.

2. Reversão após erro

START TRANSACTION;
INSERT INTO orders (customer_id, product_id, quantity) VALUES (1, 2, 3);
-- Error: Duplicate entry for key 'PRIMARY'
ROLLBACK;

Aqui, uma transação é iniciada, mas ocorre um erro durante a operação `INSERT`. A instrução `ROLLBACK` garante que nenhum dado parcial seja salvo.

3. Reversão condicional

START TRANSACTION;
UPDATE inventory SET stock = stock - 10 WHERE product_id = 5;
IF (SELECT stock FROM inventory WHERE product_id = 5) < 0 THEN
  ROLLBACK;
END IF;

Esse exemplo usa uma instrução condicional para `ROLLBACK` somente se o estoque resultante se tornar negativo, garantindo a consistência lógica dos dados. Observe que as construções processuais do MySQL, como `IF... ENTÃO... END IF` requerem manipuladores ou procedimentos/funções armazenados, que podem não ser diretamente executáveis em um script SQL padrão sem contexto adicional.

Dicas e práticas recomendadas

  • Use com transações. Sempre use `ROLLBACK` em um bloco de transação para garantir sua eficácia.
  • Verifique as condições. Antes da reversão, verifique as condições para evitar operações desnecessárias, garantindo o uso eficiente dos recursos.
  • Combine com Savepoints. Use `SAVEPOINT` para obter um controle mais granular, permitindo reversões parciais dentro de transações com `ROLLBACK TO SAVEPOINT`.
  • Monitorar o desempenho. Reversões frequentes podem afetar o desempenho; garanta que as transações sejam bem planejadas para minimizar as reversões.
  • Impacto da consistência dos dados. O uso inadequado de reversões pode afetar a consistência dos dados. Gerencie cuidadosamente as transações para evitar a perda não intencional de dados.
  • Aviso de Irreversibilidade. Quando o `ROLLBACK` é executado, as alterações são irreversivelmente desfeitas. Certifique-se de que essa operação seja realizada intencionalmente.

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça