Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Återställer den aktuella transaktionen och tar bort alla ändringar som gjorts sedan transaktionens början. Krav och användningsmönster för interaktiva transaktioner finns i Interaktiva transaktioner.
Syntax
ROLLBACK [ TRANSACTION | WORK ]
Parameters
Den här uttalandet har inga parametrar.
Notes
- Om det inte finns någon aktiv transaktion, leder utförandet av
ROLLBACKinte till något fel. - Om en åtgärd i en transaktion resulterar i ett fel, anger transaktionen ett avbrutet tillstånd. Efterföljande läs- och skrivåtgärder avvisas med ett fel tills transaktionen uttryckligen återställs av användaren.
- Om du vill köra den här instruktionen måste du ha en aktiv transaktion och lämpliga behörigheter för alla objekt som har lästs eller ändrats i transaktionen.
Exempel
Följande exempel visar hur du återställer interaktiva transaktioner.
Grundläggande tillbakagång
Kör varje instruktion i en separat cell:
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;
Hantera exekveringsfel
När ett kommando i en transaktion misslyckas måste du uttryckligen rulla tillbaka transaktionen innan du startar en ny. Kör varje instruktion i en separat cell:
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;
Hantera parserfel
Parsningsfel kräver också explicit återställning. Kör varje instruktion i en separat cell:
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;
Villkorlig återställning
Du kan använda ROLLBACK för villkorsstyrd logik baserat på affärsregler. Kör varje instruktion i en separat cell:
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;
Återställa efter misslyckad incheckning
Om en COMMIT misslyckas måste du uttryckligen rulla tillbaka. Kör varje instruktion i en separat cell:
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;
Relaterade artiklar
- BEGIN TRANSACTION (interaktiva transaktioner): Starta en interaktiv transaktion
- COMMIT: Genomför en interaktiv transaktion och gör alla ändringar permanenta
- ATOMIC-sammansatt instruktion (icke-interaktiva transaktioner): Kör flera SQL-instruktioner som en enda atomisk transaktion med automatisk incheckning och återställning
- Transaktioner: Översikt över transaktionsstöd, krav och begränsningar
- Transaktionslägen: Detaljerade mönster och exempel för icke-interaktiva och interaktiva transaktioner