Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
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;
Verwante artikelen
- BEGIN TRANSACTION (interactieve transacties): een interactieve transactie starten
- DOORVOEREN: Een interactieve transactie doorvoeren en alle wijzigingen permanent aanbrengen
- ATOMIC-samengestelde instructie (niet-interactieve transacties): meerdere SQL-instructies uitvoeren als één atomische transactie met automatische doorvoer en terugdraaien
- Transacties: Overzicht van transactieondersteuning, vereisten en beperkingen
- Transactiemodi: Gedetailleerde patronen en voorbeelden voor niet-interactieve en interactieve transacties