Condividi tramite


Reversione

Si applica a:segno di spunta sì Databricks SQL

Esegue il rollback della transazione corrente, rimuovendo tutte le modifiche apportate dall'inizio della transazione. Per i requisiti e i modelli di utilizzo per le transazioni interattive, vedere Transazioni interattive.

Sintassi

ROLLBACK [ TRANSACTION | WORK ]

Parametri

Questa istruzione non ha parametri.

Note

  • Se non è presente alcuna transazione attiva, l'esecuzione ROLLBACKnon genera un errore.
  • Se un'operazione all'interno di una transazione genera un errore, la transazione entra in uno stato interrotto. Le operazioni di lettura e scrittura successive vengono rifiutate con un errore finché non viene eseguito il rollback esplicito della transazione da parte dell'utente.
  • Per eseguire questa istruzione, è necessario disporre di una transazione attiva e delle autorizzazioni appropriate per tutti gli oggetti letti o modificati all'interno della transazione.

Examples

Gli esempi seguenti illustrano come eseguire il rollback delle transazioni interattive.

Ripristino di base

Eseguire ogni comando in una cella separata:

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;

Gestire gli errori di esecuzione

Quando un'istruzione all'interno di una transazione ha esito negativo, è necessario eseguire il rollback in modo esplicito prima di avviare una nuova transazione. Esegui ogni comando in una cella separata.

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;

Gestire gli errori del parser

Gli errori del parser richiedono anche il rollback esplicito. Eseguire ogni istruzione in una cella separata:

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;

Rollback condizionale

È possibile usare ROLLBACK per la logica condizionale in base alle regole business. Eseguire ogni istruzione in una cella separata:

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;

Eseguire il rollback dopo il commit non riuscito

In caso di COMMIT errore, è necessario eseguire il rollback in modo esplicito. Esegui ciascuna istruzione in una cella distinta

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;