Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
Databricks SQL
Databricks Runtime 18.0 és újabb
Olyan SQL-szkriptblokkot implementál, amely SQL-utasítások, folyamatvezérlési utasítások, helyi változódeklarációk és kivételkezelők sorozatát tartalmazhatja. Amikor ATOMIC meg van jelölve, a blokk tranzakciós egységként fut, ahol az összes utasítás együtt sikeres vagy sikertelen.
Szemantika
BEGIN ATOMIC
statement1;
statement2;
...
END;
Paraméterek
Nincs. A ATOMIC kulcsszó módosítja az összetett utasítás viselkedését.
Leírás
Az összetett utasítást atomi tranzakcióblokkként jelöli meg. A blokkon belüli összes utasítás egyetlen tranzakciós egységként fut – vagy az összes utasítás együtt sikeres, vagy az összes módosítás vissza lesz állítva, ha bármelyik utasítás meghiúsul. Azure Databricks automatikusan véglegesíti a módosításokat a blokk sikeres befejezésekor, vagy ha bármelyik utasítás meghiúsul, visszaállítja az összes módosítást.
BEGIN ATOMIC ... END blokkok más atomblokkokban is beágyazhatók. A belső blokk a külső tranzakcióba van lapolva – az összes utasítás egyetlen nagyobb tranzakció részeként fut. Ez nem beágyazott tranzakció. Az atomblokkok nem tartalmazhatnak nem atomi BEGIN ... END blokkokat.
Ez nem interaktív tranzakció – nem kell manuálisan futtatnia a COMMIT vagy a ROLLBACK parancsokat.
Követelmények
- Több utasítást tartalmazó, többtáblás tranzakcióban írt összes táblának meg kell felelnie a következő követelményeknek:
- Unity Catalog által kezelt táblák (Delta vagy Iceberg)
- A katalógus véglegesítéseinek engedélyezése
- Használjon SQL-raktárat, kiszolgáló nélküli számítást vagy Databricks Runtime 18.0-s vagy újabb verziót futtató fürtöt.
- A tranzakción belül módosított objektumokhoz megfelelő engedélyekkel kell rendelkeznie. Az egyes utasítások futtatásakor a rendszer ellenőrzi a jogosultságokat.
Examples
Az alábbi példák a gyakori tranzakciós mintákat mutatják be a használatával BEGIN ATOMIC ... END;.
Frissítések koordinálása több táblában
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;
Adatok érvényesítése véglegesítés előtt
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;
Kapcsolódó cikkek
- BEGIN TRANSACTION: Interaktív tranzakció indítása manuális véglegesítési/visszaállítási vezérlővel
- VÉGLEGESÍTÉS: Interaktív tranzakció véglegesítése
- VISSZAÁLLÍTÁS: Interaktív tranzakció visszaállítása
-
Összetett utasítás:
BEGIN ... ENDkulcsszó nélküliATOMICblokkok - Tranzakciók: A tranzakciótámogatás áttekintése
- Tranzakciós módok: Részletes minták és példák nem interaktív és interaktív tranzakciókhoz