Freigeben über


BEGEHEN

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

Führt einen Commit für die aktuelle interaktive Transaktion durch, wobei alle Änderungen in allen geänderten Tabellen dauerhaft vorgenommen werden. Anforderungen und Verwendungsmuster für interaktive Transaktionen finden Sie unter "Interaktive Transaktionen".

Syntax

COMMIT [ TRANSACTION | WORK ]

Parameter

Diese Anweisung hat keine Parameter.

Hinweise

  • Wenn keine aktive Transaktion vorhanden ist, führt die Ausführung COMMIT zu einem NO_ACTIVE_TRANSACTION Fehler.
  • Wenn COMMIT fehlschlägt, wird die Transaktion abgebrochen, und Sie müssen explizit ROLLBACK ausführen, um den Transaktionsstatus zurückzusetzen, bevor Sie eine neue Transaktion beginnen. Häufige Ursachen für COMMIT Fehler sind Schreibkonflikte mit anderen gleichzeitigen Transaktionen.
  • 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, wie interaktive Transaktionen ausgeführt werden.

Grundlegende Transaktion

Führen Sie jede Anweisung separat aus.

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;

Lies-eigene-Schreibvorgänge

Führen Sie jede Anweisung separat aus.

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;

Umgang mit Commit-Fehlern

Wenn COMMIT aufgrund von Konflikten oder anderen Fehlern fehlschlägt, müssen Sie explizit einen Rollback durchführen. Führen Sie jede Anweisung separat 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;