Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Revierte la transacción actual, descartando todos los cambios realizados desde el principio de la transacción. Para conocer los requisitos y los patrones de uso de las transacciones interactivas, consulte Transacciones interactivas.
Sintaxis
ROLLBACK [ TRANSACTION | WORK ]
Parámetros
Esta instrucción no tiene parámetros.
Notas
- Si no hay ninguna transacción activa, ejecutar
ROLLBACKno produce un error. - Si una operación dentro de una transacción produce un error, la transacción entra en un estado anulado. Las operaciones de lectura y escritura posteriores se rechazan con un error hasta que el usuario revierte explícitamente la transacción.
- Para ejecutar esta instrucción, debe tener una transacción activa y los permisos adecuados en todos los objetos que se han leído o modificado dentro de la transacción.
Ejemplos
En los ejemplos siguientes se muestra cómo revertir transacciones interactivas.
Reversión básica
Ejecute cada instrucción en una celda independiente:
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;
Control de errores de ejecución
Cuando se produce un error en una instrucción dentro de una transacción, debe revertir explícitamente antes de iniciar una nueva transacción. Ejecute cada instrucción en una celda independiente:
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;
Manejo de errores del analizador
Los errores del analizador también requieren reversión explícita. Ejecute cada instrucción en una celda independiente:
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;
Reversión condicional
Puede usar ROLLBACK para la lógica condicional basada en reglas de negocios. Ejecute cada declaración en una celda independiente:
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;
Revertir tras un commit fallido
Si se produce un COMMIT error, debe revertir explícitamente. Ejecute cada instrucción en una celda independiente:
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;
Artículos relacionados
- BEGIN TRANSACTION (transacciones interactivas): iniciar una transacción interactiva
- COMMIT: Confirmar una transacción interactiva y hacer permanentes todos los cambios
- Instrucción compuesta ATOMIC (transacciones no interactivas): ejecute varias instrucciones SQL como una sola transacción atómica con confirmación y reversión automáticas.
- Transacciones: información general sobre la compatibilidad, los requisitos y las limitaciones de las transacciones
- Modos de transacción: patrones y ejemplos detallados para transacciones no interactivas e interactivas