Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Databricks Runtime 18.0 lub nowszego
Implementuje blok skryptu SQL, który może zawierać sekwencję instrukcji SQL, instrukcji sterowania przepływem, deklaracje zmiennych lokalnych i procedury obsługi wyjątków. Po oznaczeniu jako ATOMICblok jest uruchamiany jako jednostka transakcyjna, w której wszystkie instrukcje kończą się powodzeniem lub kończą się niepowodzeniem.
Składnia
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parametry
Żaden. Słowo ATOMIC kluczowe modyfikuje zachowanie instrukcji złożonej .
Opis
Oznacza wyrażenie złożone jako blok transakcji atomowej. Wszystkie instrukcje w bloku są wykonywane jako pojedyncza jednostka transakcyjna: albo wszystkie zostaną wykonane pomyślnie, albo wszystkie zmiany zostaną wycofane, jeśli którakolwiek instrukcja zakończy się niepowodzeniem. Azure Databricks automatycznie zatwierdza zmiany po pomyślnym zakończeniu bloku lub cofa wszystkie zmiany w przypadku niepowodzenia jakiejkolwiek instrukcji.
Nie można BEGIN ATOMIC ... END zagnieżdżać bloków. Blok atomowy może zawierać blok nieatomowy BEGIN ... END ; te instrukcje są wykonywane jako część zewnętrznej transakcji atomowej. Możesz CALL wykonać atomową procedurę składowaną z bloku atomowego. Ciało procedury jest włączane do transakcji zewnętrznej. Wszystkie instrukcje są wykonywane w ramach jednej większej transakcji. Nie jest to transakcja zagnieżdżona.
Jest to transakcja nieinterakcyjna. Nie musisz uruchamiać COMMIT ani ROLLBACK ręcznie.
Wymagania
- Wszystkie tabele, do których zapis odbywa się w transakcji obejmującej wiele instrukcji i wiele tabel, muszą:
- Tabela zarządzana przez Unity Catalog (Delta lub Iceberg)
- Włącz zatwierdzenia katalogu
- Użyj magazynu SQL Warehouse, bezserwerowego środowiska obliczeniowego lub klastra z uruchomionym środowiskiem Databricks Runtime 18.0 lub nowszym.
- Musisz mieć odpowiednie uprawnienia do obiektów zmodyfikowanych w ramach transakcji. Uprawnienia są sprawdzane podczas wykonywania każdej instrukcji.
Examples
W poniższych przykładach pokazano typowe wzorce transakcji przy użyciu polecenia BEGIN ATOMIC ... END;.
Koordynowanie aktualizacji w wielu tabelach
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;
Zweryfikuj dane przed zatwierdzeniem
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;
Dodatkowe zasoby
- ROZPOCZNIJ TRANSAKCJĘ: Rozpoczynanie interakcyjnej transakcji za pomocą kontrolki ręcznego zatwierdzania/wycofywania
- ZATWIERDZENIE: Zatwierdzanie transakcji interakcyjnej
- WYCOFYWANIE: Wycofywanie interakcyjnej transakcji
-
Instrukcja złożona:
BEGIN ... ENDbloki bez słowa kluczowegoATOMIC - Transakcje: Omówienie obsługi transakcji
- Tryby transakcji: szczegółowe wzorce i przykłady transakcji nieinterakcyjnych i interakcyjnych