Delen via


ROLLBACK

Van toepassing op:aangevinkt als ja Databricks SQL

Hiermee wordt de huidige transactie teruggedraaid, waarbij alle wijzigingen die sinds het begin van de transactie zijn aangebracht, worden genegeerd. Zie Interactieve transacties voor vereisten en gebruikspatronen voor interactieve transacties.

Syntaxis

ROLLBACK [ TRANSACTION | WORK ]

Parameterwaarden

Deze uitspraak heeft geen parameters.

Aantekeningen

  • Als er geen actieve transactie is, resulteert uitvoeren ROLLBACKniet in een fout.
  • Als een bewerking in een transactie resulteert in een fout, wordt de transactie afgebroken. Volgende lees- en schrijfbewerkingen worden geweigerd met een fout totdat de transactie expliciet wordt teruggedraaid door de gebruiker.
  • Als u deze instructie wilt uitvoeren, moet u een actieve transactie en de juiste machtigingen hebben voor alle objecten die in de transactie zijn gelezen of gewijzigd.

Examples

In de volgende voorbeelden ziet u hoe u interactieve transacties kunt terugdraaien.

Eenvoudige terugdraaiactie

Voer elke instructie uit in een afzonderlijke cel:

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;

Uitvoeringsfouten afhandelen

Wanneer een instructie binnen een transactie mislukt, moet u expliciet een rollback uitvoeren voordat u een nieuwe transactie start. Voer elke instructie uit in een afzonderlijke cel:

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;

Parserfouten verwerken

Parserfouten vereisen ook expliciet herstel. Voer elke instructie uit in een afzonderlijke cel:

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;

Voorwaardelijke terugdraaiactie

U kunt voorwaardelijke logica gebruiken ROLLBACK op basis van bedrijfsregels. Voer elke instructie uit in een afzonderlijke cel:

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;

Terugdraaien na mislukte commit

Als een COMMIT faalt, moet u expliciet herstellen. Voer elke instructie uit in een afzonderlijke cel:

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;