Accéder au contenu principal
Documents
FonctionsExpressionsKeywordsDéclarationsClauses

Déclaration ROLLBACK de MySQL

L'instruction `ROLLBACK` de MySQL est utilisée pour annuler les transactions qui n'ont pas encore été validées dans la base de données. Il vous permet de ramener la base de données au dernier état validé, ce qui garantit l'intégrité des données en cas d'erreurs ou de modifications involontaires.

Utilisation

`ROLLBACK` est utilisé dans le cadre du contrôle des transactions pour annuler une transaction et restaurer la base de données à son état précédent. Cette instruction est particulièrement utile lorsqu'une erreur se produit au cours d'une transaction, vous permettant d'annuler tous les changements effectués après la dernière `COMMIT`. Les transactions sont des séquences d'opérations effectuées comme une seule unité logique de travail, et `COMMIT` est utilisé pour rendre toutes les modifications permanentes, alors que `ROLLBACK` les annule.

ROLLBACK;

Dans cette syntaxe, `ROLLBACK` annule simplement toutes les opérations effectuées dans la transaction courante. Notez que `ROLLBACK` n'est applicable que dans les moteurs de stockage qui supportent les transactions, comme InnoDB, et n'est pas applicable dans les moteurs de stockage non-transactionnels comme MyISAM.

Exemples

1. Rollback de base

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

Dans cet exemple, l'opération `UPDATE` est annulée, donc le `balance` reste inchangé à cause du `ROLLBACK`.

2. Revenir en arrière après une erreur

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

Ici, une transaction est lancée, mais une erreur se produit pendant l'opération `INSERT`. L'instruction `ROLLBACK` permet de s'assurer qu'aucune donnée partielle n'est sauvegardée.

3. Rétablissement conditionnel

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;

Cet exemple utilise une instruction conditionnelle pour ne revenir en arrière que si l'action résultante devient négative, ce qui garantit la cohérence logique des données. Notez que les constructions procédurales de MySQL comme `IF... ALORS... END IF` nécessitent des gestionnaires ou des procédures/fonctions stockées, qui peuvent ne pas être directement exécutables dans un script SQL standard sans contexte supplémentaire.

Conseils et bonnes pratiques

  • A utiliser avec les transactions. Utilisez toujours `ROLLBACK` à l'intérieur d'un bloc de transaction pour garantir son efficacité.
  • Vérifiez les conditions. Avant de procéder au retour en arrière, vérifiez les conditions afin d'éviter les opérations inutiles et de garantir une utilisation efficace des ressources.
  • Combinez avec les points de sauvegarde. Utilisez `SAVEPOINT` pour un contrôle plus granulaire, permettant des retours en arrière partiels dans les transactions avec `ROLLBACK TO SAVEPOINT`.
  • Contrôlez les performances. Les retours en arrière fréquents peuvent avoir un impact sur les performances ; assurez-vous que les transactions sont bien planifiées afin de minimiser les retours en arrière.
  • Impact sur la cohérence des données. Une mauvaise utilisation des retours en arrière peut affecter la cohérence des données. Gérez soigneusement les transactions afin d'éviter toute perte de données involontaire.
  • Avertissement d'irréversibilité. Une fois que `ROLLBACK` est exécuté, les changements sont irréversiblement annulés. Assurez-vous que cette opération est effectuée intentionnellement.

Amélioration de SQL pour les débutants

Acquérir les compétences SQL pour interagir avec vos données et les interroger.
Commencez à apprendre gratuitement