Delen via


COMMIT

Van toepassing op:aangevinkt als ja Databricks SQL

Voert de huidige interactieve transactie door, waardoor alle wijzigingen in alle gewijzigde tabellen permanent worden doorgevoerd. Zie Interactieve transacties voor vereisten en gebruikspatronen voor interactieve transacties.

Syntaxis

COMMIT [ TRANSACTION | WORK ]

Parameterwaarden

Deze uitspraak heeft geen parameters.

Aantekeningen

  • Als er geen actieve transactie is, resulteert het uitvoeren COMMIT van een NO_ACTIVE_TRANSACTION fout.
  • Als COMMIT dit mislukt, wordt de transactie afgebroken en moet u expliciet uitvoeren ROLLBACK om de transactiestatus opnieuw in te stellen voordat u een nieuwe transactie start. Veelvoorkomende redenen voor COMMIT fouten zijn schrijfconflicten met andere gelijktijdige transacties.
  • Als u deze instructie wilt uitvoeren, moet u een actieve transactie en de juiste machtigingen hebben voor alle objecten die in de transactie worden gelezen of gewijzigd.

Examples

In de volgende voorbeelden ziet u hoe u interactieve transacties doorvoert.

Basistransactie

Voer elke instructie afzonderlijk uit.

BEGIN TRANSACTION;
-- Insert a new record
INSERT INTO my_table VALUES (1, 'test');
-- Update records in another table
UPDATE another_table
SET value = 'updated'
WHERE id = 5;
-- Commit all changes in both tables atomically
COMMIT TRANSACTION;

Lees je eigen schrijfhandelingen

Voer elke instructie afzonderlijk uit.

BEGIN TRANSACTION;
-- Insert new data
INSERT INTO customers VALUES (101, 'New Customer');
-- Update the newly inserted data
UPDATE customers SET name = 'Updated Customer Name' WHERE id = 101;
-- Query sees the updated value within the transaction
SELECT name FROM customers WHERE id = 101;
-- Returns 'Updated Customer Name'
-- Commit makes changes visible to other transactions
COMMIT;

Commit-fout afhandelen

Als COMMIT mislukt vanwege conflicten of andere fouten, moet u expliciet een rollback uitvoeren. Voer elke instructie afzonderlijk uit.

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;