Freigeben über


Rollback

Gilt für:Grünes Häkchen für „Ja“ Databricks SQL

Führt einen Rollback der aktuellen Transaktion durch, wobei alle seit Beginn der Transaktion vorgenommenen Änderungen verworfen werden. Anforderungen und Verwendungsmuster für interaktive Transaktionen finden Sie unter "Interaktive Transaktionen".

Syntax

ROLLBACK [ TRANSACTION | WORK ]

Parameter

Diese Anweisung hat keine Parameter.

Hinweise

  • Wenn keine aktive Transaktion vorhanden ist, führt die Ausführung ROLLBACKnicht zu einem Fehler.
  • Wenn ein Vorgang innerhalb einer Transaktion zu einem Fehler führt, gibt die Transaktion einen abgebrochenen Zustand ein. Nachfolgende Lese- und Schreibvorgänge werden mit einem Fehler abgelehnt, bis die Transaktion explizit vom Benutzer zurückgesetzt wird.
  • Zum Ausführen dieser Anweisung benötigen Sie eine aktive Transaktion und entsprechende Berechtigungen für alle Objekte, die innerhalb der Transaktion gelesen oder geändert wurden.

Beispiele

Die folgenden Beispiele veranschaulichen das Zurücksetzen interaktiver Transaktionen.

Grundlegendes Rollback

Führen Sie jede Anweisung in einer separaten Zelle aus:

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;

Behandeln von Ausführungsfehlern

Wenn eine Anweisung innerhalb einer Transaktion fehlschlägt, müssen Sie explizit ein Rollback durchführen, bevor Sie eine neue Transaktion starten. Führen Sie jede Anweisung in einer separaten Zelle aus:

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;

Behandeln von Parserfehlern

Parserfehler erfordern auch explizites Rollback. Führen Sie jede Anweisung in einer separaten Zelle aus:

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;

Bedingter Rollback

Sie können für bedingte Logik basierend auf Geschäftsregeln verwenden ROLLBACK . Führen Sie jede Anweisung in einer separaten Zelle aus:

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;

Rollback nach fehlgeschlagenem Commit-Vorgang

Wenn ein COMMIT Fehler auftritt, müssen Sie einen expliziten Rollback ausführen. Führen Sie jede Anweisung in einer separaten Zelle aus:

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;