Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime 18.0 e superiores
Implementa um bloco de Script SQL que pode conter uma sequência de instruções SQL, instruções de controle de fluxo, declarações de variáveis locais e manipuladores de exceções. Quando marcado como ATOMIC, o bloco executa-se como uma unidade transacional onde todas as instruções têm sucesso em conjunto ou falham em conjunto.
Sintaxe
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parâmetros
Nenhum. A ATOMIC palavra-chave modifica o comportamento da declaração composta .
Descrição
Marca a declaração composta como um bloco transacional atómico. Todas as instruções dentro do bloco funcionam como uma única unidade transacional: ou todas as instruções têm sucesso em conjunto, ou todas as alterações são revertidas se alguma instrução falhar. O Azure Databricks confirma automaticamente as alterações quando o bloco é concluído com sucesso, ou reverte todas as alterações se alguma instrução falhar.
Não podes aninhar blocos BEGIN ATOMIC ... END. Um bloco atómico pode conter um bloco não atómico BEGIN ... END ; essas instruções executam-se como parte da transação atómica externa. Pode CALL executar um procedimento armazenado atómico a partir de um bloco atómico. O corpo do procedimento é integrado na transação externa. Todas as instruções são executadas como parte de uma única transação maior. Isto não é uma transação aninhada.
Esta é uma transação não interativa. Não é necessário executar COMMIT nem ROLLBACK manualmente.
Requisitos
- Todas as tabelas escritas numa transação com múltiplas instruções e múltiplas tabelas devem ser:
- Tabelas geridas por catálogo Be Unity (Delta ou Iceberg)
- Ter os commits do Catálogo ativados
- Utilize um SQL warehouse, computação serverless ou um cluster a executar Databricks Runtime 18.0 e superiores.
- Deve ter permissões adequadas sobre objetos modificados dentro da transação. Os privilégios são verificados quando cada instrução é executada.
Exemplos
Os exemplos seguintes demonstram padrões comuns de transação usando BEGIN ATOMIC ... END;.
Atualizações de coordenadas em múltiplas tabelas
BEGIN ATOMIC
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
INSERT INTO audit_log VALUES (1, 2, 100, current_timestamp());
END;
Valide os dados antes de cometer
BEGIN ATOMIC
INSERT INTO staging_customers
SELECT * FROM external_source WHERE ingest_date = current_date();
IF (SELECT COUNT(*) FROM staging_customers WHERE email NOT LIKE '%@%') > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid email addresses found';
END IF;
MERGE INTO customers AS target
USING staging_customers AS source
ON target.customer_id = source.customer_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
END;
Recursos adicionais
- INICIAR TRANSAÇÃO: Iniciar uma transação interativa com controlo manual de commit/rollback.
- COMMIT: Confirmar uma transação interativa
- ROLLBACK: Reverter uma transação interativa
-
Afirmação composta:
BEGIN ... ENDbloqueia sem aATOMICpalavra-chave - Transações: Visão geral do suporte a transações
- Modos de transação: Padrões detalhados e exemplos para transações não interativas e interativas