Partager via


RETOUR EN ARRIÈRE

S’applique à :case cochée oui Databricks SQL

Annule la transaction actuelle, en ignorant toutes les modifications apportées depuis le début de la transaction. Pour connaître les exigences et les modèles d’utilisation pour les transactions interactives, consultez Transactions interactives.

Syntaxe

ROLLBACK [ TRANSACTION | WORK ]

Paramètres

Cette instruction n’a aucun paramètre.

Remarques

  • S’il n’existe aucune transaction active, l’exécution ROLLBACK n’entraîne pas d’erreur.
  • Si une opération dans une transaction génère une erreur, la transaction entre dans un état abandonné. Les opérations de lecture et d’écriture suivantes sont rejetées avec une erreur jusqu’à ce que la transaction soit explicitement restaurée par l’utilisateur.
  • Pour exécuter cette instruction, vous devez disposer d’une transaction active et d’autorisations appropriées sur tous les objets qui ont été lus ou modifiés dans la transaction.

Exemples

Les exemples suivants montrent comment annuler des transactions interactives.

Retour en arrière simple

Exécutez chaque instruction dans une cellule distincte :

BEGIN TRANSACTION;
-- Attempt an insert operation
INSERT INTO my_table VALUES (1, 'incorrect-value');
-- After discovering the mistake, rollback the transaction
-- (no changes are actually made to the tables)
ROLLBACK TRANSACTION;

Gérer les erreurs d’exécution

Lorsqu’une instruction au sein d’une transaction échoue, vous devez annuler explicitement la transaction avant de démarrer une nouvelle transaction. Exécutez chaque instruction dans une cellule distincte :

BEGIN TRANSACTION;
-- A query that causes a division by zero error
SELECT 1/0;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;

Gérer les erreurs d’analyseur

Les erreurs de parseur nécessitent également un retour en arrière explicite. Exécutez chaque instruction dans une cellule distincte :

BEGIN TRANSACTION;
-- A query that causes a parsing error
SELLLLLLECT 1;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;

Restauration conditionnelle

Vous pouvez utiliser ROLLBACK pour la logique conditionnelle en fonction des règles d’entreprise. Exécutez chaque instruction dans une cellule distincte :

BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Check a condition and rollback if not met
BEGIN
  DECLARE total_balance INT;
  SET total_balance = (SELECT SUM(balance) FROM accounts);

  IF total_balance < 0 THEN
    ROLLBACK;
  ELSE
    COMMIT;
  END IF;
END;

Revenir en arrière après l’échec d'un commit

En cas d’échec de COMMIT, vous devez explicitement annuler les modifications. Exécutez chaque instruction dans une cellule distincte :

BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Attempt to commit
COMMIT;
-- If COMMIT fails (e.g., due to write conflict),
-- the transaction is aborted
-- You must explicitly roll back before starting a new transaction
ROLLBACK;