Partilhar via


COMMIT

Aplica-se a:sim marcado Databricks SQL

Confirma a transação interativa atual, tornando todas as alterações em todas as tabelas modificadas permanentes. Para requisitos e padrões de utilização para transações interativas, veja Transações interativas.

Sintaxe

COMMIT [ TRANSACTION | WORK ]

Parâmetros

Esta afirmação não tem parâmetros.

Notes

  • Se não houver transação ativa, a execução COMMIT resulta num erro de NO_ACTIVE_TRANSACTION .
  • Se COMMIT falhar, a transação é abortada e você deve executar ROLLBACK explicitamente para redefinir o estado da transação antes de iniciar uma nova transação. Razões comuns para COMMIT falhas incluem conflitos de escrita com outras transações concorrentes.
  • Para executar esta instrução, deve ter uma transação ativa e permissões apropriadas em todos os objetos lidos ou modificados dentro da transação.

Exemplos

Os exemplos seguintes demonstram como realizar transações interativas.

Transação básica

Executa cada instrução separadamente.

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;

Leia as suas próprias escritas

Executa cada instrução separadamente.

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;

Lidar com falhas de commit

Se COMMIT falhar devido a conflitos ou outros erros, tens de reverter explicitamente. Executa cada instrução separadamente.

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;