Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
SQL do Databricks
Databricks Runtime 18.0 e superior
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ção. Quando marcado como ATOMIC, o bloco é executado como uma unidade transacional em que todas as instruções são bem-sucedidas juntas ou falham juntas.
Sintaxe
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parâmetros
Nenhum. A ATOMIC palavra-chave altera o comportamento da declaração composta.
Descrição
Marca a declaração composta como um bloco de transação atômica. Todas as instruções dentro do bloco são executadas como uma única unidade transacional: ou todas são executadas com sucesso em conjunto, ou todas as alterações são revertidas se alguma instrução falhar. Azure Databricks confirma automaticamente as alterações quando o bloco é concluído com êxito ou reverte todas as alterações se alguma instrução falhar.
Você não pode aninhar BEGIN ATOMIC ... END blocos. Um bloco atômico pode conter um bloco não atômico BEGIN ... END ; essas instruções são executadas como parte da transação atômica externa. Você pode usar CALL para chamar um procedimento armazenado atômico a partir de um bloco atômico. O corpo do procedimento é achatado na transação externa. Todas as instruções são executadas como parte de uma única transação maior. Essa não é uma transação aninhada.
Essa é uma transação não interativa. Você não precisa executar COMMIT ou ROLLBACK manualmente.
Requisitos
- Todas as tabelas gravadas em uma transação de várias instruções e várias tabelas devem:
- Serem tabelas gerenciadas no Catálogo Unity (Delta ou Iceberg)
- Ter confirmações de catálogo habilitadas
- Use um sql warehouse, computação sem servidor ou um cluster executando o Databricks Runtime 18.0 e superior.
- Você deve ter permissões apropriadas em objetos modificados dentro da transação. Os privilégios são verificados quando cada instrução é executada.
Exemplos
Os exemplos a seguir demonstram padrões comuns de transação usando BEGIN ATOMIC ... END;.
Coordenar atualizações em várias 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;
Validar dados antes de confirmar
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
- BEGIN TRANSACTION: Iniciar uma transação interativa com controle manual de confirmação/reversão
- COMMIT: Confirmar uma transação interativa
- ROLLBACK: Reverter uma transação interativa
-
Instrução composta: blocos
BEGIN ... ENDsem a palavra-chaveATOMIC - Transações: visão geral do suporte à transação
- Modos de transação: padrões e exemplos detalhados para transações não interativas e interativas