Condividi tramite


COMMETTERE

Si applica a:segno di spunta sì Databricks SQL

Esegue il commit della transazione interattiva corrente, apportando tutte le modifiche in tutte le tabelle modificate in modo permanente. Per i requisiti e i modelli di utilizzo per le transazioni interattive, vedere Transazioni interattive.

Sintassi

COMMIT [ TRANSACTION | WORK ]

Parametri

Questa istruzione non ha parametri.

Note

  • Se non è presente alcuna transazione attiva, l'esecuzione COMMIT genera un errore NO_ACTIVE_TRANSACTION .
  • In caso COMMIT di errore, la transazione viene interrotta ed è necessario eseguire ROLLBACK in modo esplicito per reimpostare lo stato della transazione prima di iniziare una nuova transazione. I motivi comuni di COMMIT fallimenti includono conflitti di scrittura con altre transazioni concorrenti.
  • Per eseguire questa istruzione, è necessario disporre di una transazione attiva e delle autorizzazioni appropriate per tutti gli oggetti letti o modificati all'interno della transazione.

Examples

Negli esempi seguenti viene illustrato come eseguire il commit di transazioni interattive.

Transazione di base

Eseguire ogni istruzione separatamente.

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;

Lettura-proprie-scritture

Eseguire ogni istruzione separatamente.

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;

Gestire il fallimento del commit

Se COMMIT non riesce a causa di conflitti o altri errori, è necessario eseguire il rollback in modo esplicito. Eseguire ogni comando separatamente.

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;