Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime 18.0 et versions ultérieures
Implémente un bloc de script SQL qui peut contenir une séquence d’instructions SQL, d’instructions de contrôle de flux, de déclarations de variables locales et de gestionnaires d’exceptions. Lorsqu’elles sont marquées comme ATOMIC, le bloc s’exécute en tant qu’unité transactionnelle où toutes les instructions réussissent ensemble ou échouent ensemble.
Syntaxe
BEGIN ATOMIC
statement1;
statement2;
...
END;
Paramètres
Aucun. Le ATOMIC mot clé modifie le comportement de l’instruction composée .
Description
Marque l’instruction composée comme bloc de transaction atomique. Toutes les instructions du bloc s’exécutent sous la forme d’une seule unité transactionnelle : toutes les instructions réussissent ensemble ou toutes les modifications sont restaurées si une instruction échoue. Azure Databricks valide automatiquement les modifications lorsque le bloc se termine correctement, ou restaure toutes les modifications en cas d’échec d’une instruction.
BEGIN ATOMIC ... END les blocs peuvent être imbriqués dans d’autres blocs atomiques. Le bloc interne est aplatit dans la transaction externe : toutes les instructions s’exécutent dans le cadre d’une transaction plus grande. Il ne s’agit pas d’une transaction imbriquée. Un bloc atomique ne peut pas contenir de bloc non atomique BEGIN ... END .
Il s’agit d’une transaction non interactive , vous n’avez pas besoin d’exécuter COMMIT ou ROLLBACK manuellement.
Exigences
- Toutes les tables écrites dans une transaction multi-instruction, multi-table doivent :
- "Les tables doivent être gérées par Unity Catalog (Delta ou Iceberg)"
- Activer les validations gérées par le catalogue
- Utilisez un entrepôt SQL, un calcul sans serveur ou un cluster exécutant Databricks Runtime 18.0 ou versions ultérieures.
- Vous devez disposer des autorisations appropriées sur les objets modifiés dans la transaction. Les privilèges sont vérifiés lorsque chaque instruction s’exécute.
Exemples
Les exemples suivants illustrent des modèles de transaction courants à l’aide de BEGIN ATOMIC ... END;.
Coordonner les mises à jour sur plusieurs tables
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;
Valider les données avant l'enregistrement
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;
Articles connexes
- BEGIN TRANSACTION : Démarrer une transaction interactive avec un contrôle manuel de la validation/annulation
- COMMIT : Valider une transaction interactive
- ROLLBACK : Restaurer une transaction interactive
-
Instruction composée : blocs sans le mot-clé
ATOMIC - Transactions : Vue d’ensemble de la prise en charge des transactions
- Modes de transaction : modèles détaillés et exemples pour les transactions non interactives et interactives