Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime 18.0 e versioni successive
Implementa un blocco di script SQL che può contenere una sequenza di istruzioni SQL, istruzioni control-of-flow, dichiarazioni di variabili locali e gestori di eccezioni. Se contrassegnato come ATOMIC, il blocco viene eseguito come unità transazionale in cui tutte le istruzioni riescono o falliscono insieme.
Sintassi
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parametri
Nessuno. La ATOMIC parola chiave modifica il comportamento dell'istruzione composita.
Descrizione
Contrassegna l'istruzione composta come blocco di transazioni atomiche. Tutte le istruzioni all'interno del blocco vengono eseguite come un'unica unità transazionale: o tutte le istruzioni vanno a buon fine insieme, oppure vengono annullate tutte le modifiche se una qualsiasi istruzione fallisce. Azure Databricks esegue automaticamente il commit delle modifiche quando il blocco viene completato correttamente o annulla tutte le modifiche se una dichiarazione fallisce.
BEGIN ATOMIC ... END i blocchi possono essere annidati all'interno di altri blocchi atomici. Il blocco interno viene integrato nella transazione esterna. Tutte le istruzioni vengono eseguite come parte di una transazione unica e più grande. Non si tratta di una transazione nidificata. Un blocco atomico non può contenere un blocco non atomico BEGIN ... END .
Si tratta di una transazione non interattiva: non è necessario eseguire COMMIT o ROLLBACK manualmente.
Requisiti
- Tutte le tabelle coinvolte in una transazione multi-istruzione e multi-tabella devono:
- Essere tabelle gestite dal catalogo Unity (Delta o Iceberg)
- Abilitare commit gestiti dal catalogo
- Usare un'istanza di SQL Warehouse, un ambiente di calcolo serverless o un cluster che utilizza Databricks Runtime 18.0 o versioni successive.
- È necessario disporre delle autorizzazioni appropriate per gli oggetti modificati all'interno della transazione. I privilegi vengono controllati quando viene eseguita ogni dichiarazione.
Examples
Negli esempi seguenti vengono illustrati i modelli di transazione comuni che usano BEGIN ATOMIC ... END;.
Coordinare gli aggiornamenti tra più tabelle
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;
Convalidare i dati prima del commit
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;
Articoli correlati
- BEGIN TRANSACTION: avviare una transazione interattiva con il controllo di commit/rollback manuale
- COMMIT: eseguire il commit di una transazione interattiva
- ROLLBACK: Rollback di una transazione interattiva
-
Istruzione composta:
BEGIN ... ENDblocchi che non utilizzano laATOMICparola chiave - Transazioni: Panoramica del supporto delle transazioni
- Modalità di transazione: modelli dettagliati ed esempi per transazioni non interattive e interattive