Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
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
ROLLBACKn’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;
Articles connexes
- BEGIN TRANSACTION (transactions interactives) : commencer une transaction interactive
- COMMIT : Valider une transaction interactive et apporter toutes les modifications permanentes
- Instruction composée ATOMIC (transactions non interactives) : exécutez plusieurs instructions SQL en tant que transaction atomique unique avec validation et restauration automatiques
- Transactions : vue d’ensemble de la prise en charge des transactions, des exigences et des limitations
- Modes de transaction : modèles détaillés et exemples pour les transactions non interactives et interactives