Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 requisitos e padrões de utilização para transações interativas, veja Transações interativas.
Sintaxe
ROLLBACK [ TRANSACTION | WORK ]
Parâmetros
Esta afirmação não tem parâmetros.
Notes
- Se não houver transação ativa, a execução
ROLLBACKnão resulta em erro. - Se uma operação dentro de uma transação resultar num erro, a transação entra num estado abortado. As operações subsequentes de leitura e escrita são rejeitadas com um erro até que a transação seja explicitamente revertida pelo utilizador.
- Para executar esta instrução, deve ter uma transação ativa e permissões apropriadas sobre todos os objetos que foram lidos ou modificados dentro da transação.
Exemplos
Os exemplos seguintes demonstram como reverter transações interativas.
Rollback básico
Execute cada instrução numa 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;
Lidar com erros de execução
Quando uma instrução dentro de uma transação falha, deve reverter explicitamente antes de iniciar uma nova transação. Execute cada instrução numa 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;
Lidar com erros do parser
Erros do parser também exigem um rollback explícito. Execute cada instrução numa 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
Podes usar ROLLBACK para a lógica condicional com base em regras de negócio. Execute cada instrução numa 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 um commit falhado
Caso COMMIT falhe, deve reverter explicitamente. Execute cada instrução numa 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
- INICIAR TRANSAÇÃO (transações interativas): Iniciar uma transação interativa
- COMMIT: Confirmar uma transação interativa e efetivar todas as alterações permanentemente
- Instrução composta ATOMIC (transações não interativas): Executar múltiplas instruções SQL como uma única transação atómica com commit e rollback automáticos
- Transações: Visão geral do suporte à transação, requisitos e limitações
- Modos de transação: Padrões detalhados e exemplos para transações não interativas e interativas