ROLLBACK

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL

Visszaállítja az aktuális tranzakciót, és elveti a tranzakció kezdete óta végrehajtott összes módosítást. Az interaktív tranzakciókra vonatkozó követelményekről és használati mintákról az Interaktív tranzakciók című témakörben olvashat.

Szemantika

ROLLBACK [ TRANSACTION | WORK ]

Paraméterek

Ez az utasítás nem rendelkezik paraméterekkel.

Jegyzetek

  • Ha nincs aktív tranzakció, a végrehajtás ROLLBACKnem eredményez hibát.
  • Ha egy tranzakción belüli művelet hibát eredményez, a tranzakció megszakított állapotba kerül. Az ezt követő olvasási és írási műveleteket a rendszer hibaüzenettel utasítja el, amíg a felhasználó explicit módon vissza nem állítja a tranzakciót.
  • Az utasítás végrehajtásához aktív tranzakcióval és megfelelő engedélyekkel kell rendelkeznie a tranzakcióban beolvasott vagy módosított összes objektumra.

Examples

Az alábbi példák az interaktív tranzakciók visszaállítását mutatják be.

Alapszintű visszaállítás

Futtassa az egyes utasításokat egy külön cellában:

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;

Végrehajtási hibák kezelése

Ha egy tranzakción belüli utasítás meghiúsul, a tranzakciót explicit módon vissza kell vonnia, mielőtt új tranzakciót indítana. Futtassa az egyes utasításokat egy külön cellában:

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;

Elemzési hibák kezelése

Az elemzési hibák explicit visszaállítást is igényelnek. Futtassa az egyes utasításokat egy külön cellában:

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;

Feltételes visszaállítás

Az üzleti szabályokon alapuló feltételes logikához használható ROLLBACK . Futtassa az egyes utasításokat egy külön cellában:

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;

Visszaállítás sikertelen véglegesítés után

Ha egy COMMIT hiba meghiúsul, explicit módon vissza kell állítania. Futtassa az egyes utasításokat egy külön cellában:

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;