Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Reverte a transação atual, descartando todas as alterações feitas desde o início da transação. Para obter requisitos e padrões de uso para transações interativas, consulte transações interativas.
Sintaxe
ROLLBACK [ TRANSACTION | WORK ]
Parâmetros
Essa instrução não tem parâmetros.
Observações
- Se não houver nenhuma transação ativa, a execução
ROLLBACKnão resultará em um erro. - Se uma operação dentro de uma transação resultar em um erro, a transação entrará em um estado anulado. As operações de leitura e gravação subsequentes são rejeitadas com um erro até que a transação seja explicitamente revertida pelo usuário.
- Para executar essa instrução, você deve ter uma transação ativa e permissões apropriadas em todos os objetos que foram lidos ou modificados dentro da transação.
Exemplos
Os exemplos a seguir demonstram como reverter transações interativas.
Reversão básica
Execute cada instrução em uma célula separada:
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;
Gerenciar erros de execução
Quando uma instrução dentro de uma transação fracassa, você deve fazer uma reversão explícita antes de iniciar uma nova transação. Execute cada instrução em uma célula separada:
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;
Manipular erros do analisador sintático
Erros do parser também exigem reversão explícita. Execute cada instrução em uma célula separada:
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;
Reversão condicional
Você pode usar ROLLBACK para lógica condicional com base em regras de negócios. Execute cada instrução em uma célula separada:
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;
Reverter após falha no commit
Se COMMIT falhar, você precisa fazer a reversão explicitamente. Execute cada instrução em uma célula separada:
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;
Artigos relacionados
- BEGIN TRANSACTION (transações interativas): iniciar uma transação interativa
- COMMIT: Confirmar uma transação interativa e tornar todas as alterações permanentes
- Instrução composta ATOMIC (transações não interativas): execute várias instruções SQL como uma única transação atômica com confirmação e reversão automáticas
- Transações: visão geral do suporte à transação, requisitos e limitações
- Modos de transação: padrões e exemplos detalhados para transações não interativas e interativas