Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime 18.0 en hoger
Implementeert een SQL-scriptblok dat een reeks SQL-instructies, besturings-of-stroominstructies, lokale variabeledeclaraties en uitzonderingshandlers kan bevatten. Wanneer het blok is gemarkeerd als ATOMIC, wordt het uitgevoerd als een transactionele eenheid waarbij alle instructies samen slagen of mislukken.
Syntaxis
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parameterwaarden
Geen. Het ATOMIC trefwoord wijzigt het gedrag van de samengestelde instructies.
Beschrijving
Markeert de samengestelde opdracht als een atomair transactieblok. Alle instructies in het blok worden uitgevoerd als één transactionele eenheid: alle instructies slagen samen of alle wijzigingen worden teruggedraaid als er een instructie mislukt. In Azure Databricks worden wijzigingen automatisch doorgevoerd wanneer het blok is voltooid of worden alle wijzigingen teruggedraaid als er een instructie mislukt.
BEGIN ATOMIC ... END blokken kunnen worden genest binnen andere atomische blokken. Het binnenste blok wordt geïntegreerd in de buitenste transactie. Alle commando's worden uitgevoerd als onderdeel van één enkele grotere transactie. Dit is geen geneste transactie. Een atomisch blok kan geen niet-atomisch BEGIN ... END blok bevatten.
Dit is een niet-interactieve transactie—u hoeft COMMIT of ROLLBACK niet handmatig uit te voeren.
Requirements
- Alle tabellen waarop in een transactie met meerdere instructies en meerdere tabellen is gehandeld, moeten:
- Tabellen beheerd door Unity Catalog (Delta en Iceberg)
- Heb catalogusbeheerde commits ingeschakeld
- Gebruik een SQL Warehouse, serverloze berekening of een cluster met Databricks Runtime 18.0 en hoger.
- U moet over de juiste machtigingen beschikken voor objecten die zijn gewijzigd binnen de transactie. Bevoegdheden worden gecontroleerd wanneer elke instructie wordt uitgevoerd.
Examples
In de volgende voorbeelden ziet u veelvoorkomende transactiepatronen met behulp van BEGIN ATOMIC ... END;.
Updates coördineren voor meerdere tabellen
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;
Gegevens valideren voordat ze worden doorgevoerd
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;
Verwante artikelen
- BEGIN TRANSACTIE: Een interactieve transactie starten met handmatig doorvoeren/terugdraaien
- DOORVOEREN: Een interactieve transactie doorvoeren
- TERUGDRAAIEN: Een interactieve transactie terugdraaien
-
Samengestelde instructie:
BEGIN ... ENDblokken zonder trefwoordATOMIC - Transacties: Overzicht van transactieondersteuning
- Transactiemodi: Gedetailleerde patronen en voorbeelden voor niet-interactieve en interactieve transacties