Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
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;
Articoli correlati
- BEGIN TRANSACTION (transazioni interattive): iniziare una transazione interattiva
- COMMIT: eseguire il commit di una transazione interattiva e rendere permanenti tutte le modifiche
- Istruzione composta ATOMIC (transazioni non interattive): Esecuzione di più istruzioni SQL come una singola transazione atomica con procedura di commit e rollback automatici
- Transazioni: panoramica del supporto delle transazioni, dei requisiti e delle limitazioni
- Modalità di transazione: modelli dettagliati ed esempi per transazioni non interattive e interattive