Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Vrátí zpět aktuální transakci a zahodí všechny změny provedené od začátku transakce. Informace o požadavcích a vzorech použití pro interaktivní transakce najdete v tématu Interaktivní transakce.
Syntaxe
ROLLBACK [ TRANSACTION | WORK ]
Parametry
Tento příkaz nemá žádné parametry.
Poznámky
- Pokud neexistuje žádná aktivní transakce, provedení
ROLLBACKnezpůsobí chybu. - Pokud operace v rámci transakce způsobí chybu, transakce zadá přerušený stav. Následné operace čtení a zápisu jsou odmítnuty s chybou, dokud uživatel transakci explicitně nevrátí zpět.
- Chcete-li provést tento příkaz, musíte mít aktivní transakci a příslušná oprávnění pro všechny objekty, které byly přečteny nebo změněny v rámci transakce.
Příklady
Následující příklady ukazují, jak vrátit zpět interaktivní transakce.
Základní vrácení zpět
Spusťte každý příkaz v samostatné buňce:
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;
Řešení chyb při provádění
Pokud příkaz v rámci transakce selže, musíte před zahájením nové transakce explicitně provést rollback. Spusťte každý příkaz v samostatné buňce:
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;
Zpracování chyb analyzátoru
Chyby analyzátoru také vyžadují explicitní vrácení zpět. Spusťte každý příkaz v samostatné buňce:
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;
Podmíněné vrácení zpět
Podmíněnou logiku založenou na obchodních pravidlech můžete použít s ROLLBACK. Spusťte každý příkaz v samostatné buňce:
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;
Vrácení změn po neúspěšném commitu
Pokud COMMIT selže, musíte explicitně provést zpětný krok. Spusťte každý příkaz v samostatné buňce:
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;
Související články
- BEGIN TRANSACTION (interaktivní transakce): Zahájení interaktivní transakce
- COMMIT: Potvrdit interaktivní transakci a učinit všechny změny trvalými
- Atomic compound statement (neinteraktivní transakce):: Spuštění více příkazů SQL jako jedné atomické transakce s automatickým potvrzením a vrácením zpět
- Transakce: Přehled podpory transakcí, požadavků a omezení
- Režimy transakcí: Podrobné vzory a příklady pro neinteraktivní a interaktivní transakce