Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime 18.0 und höher
Implementiert einen SQL-Skriptblock, der eine Abfolge von SQL-Anweisungen, Steuerflussanweisungen, lokale Variablendeklarationen und Ausnahmebehandler enthalten kann. Wenn er als ATOMICgekennzeichnet ist, wird der Block als Transaktionseinheit ausgeführt, bei der alle Anweisungen zusammen erfolgreich sind oder zusammen fehlschlagen.
Syntax
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parameter
Keiner. Das ATOMIC Schlüsselwort ändert das Verhalten der zusammengesetzten Anweisung .
Beschreibung
Markiert die zusammengesetzte Anweisung als atomischer Transaktionsblock. Alle Befehle innerhalb des Blocks werden als eine einzige Transaktionseinheit ausgeführt – entweder werden alle Befehle erfolgreich abgewickelt, oder alle Änderungen werden zurückgesetzt, falls ein Befehl fehlschlägt. Azure Databricks führt änderungen automatisch durch, wenn der Block erfolgreich abgeschlossen wurde, oder setzt alle Änderungen zurück, wenn eine Anweisung fehlschlägt.
BEGIN ATOMIC ... END Blöcke können in anderen Atomblöcken geschachtelt werden. Der innere Block wird in die äußere Transaktion vereinheitlicht – alle Anweisungen werden als Teil einer einzigen größeren Transaktion ausgeführt. Dies ist keine geschachtelte Transaktion. Ein Atomblock darf keinen nicht-atomischen BEGIN ... END Block enthalten.
Dies ist eine nicht interaktive Transaktion, Sie müssen COMMIT oder ROLLBACK nicht manuell ausführen.
Anforderungen
- Alle Tabellen, die in einer Multi-Statement- und Multi-Table-Transaktion beschrieben werden, müssen in diese einbezogen werden:
- Verwaltete Tabellen im Unity Catalog (Delta oder Iceberg)
- Katalogverwaltete Commits aktiviert
- Verwenden Sie ein SQL Warehouse, serverloses Compute oder einen Cluster mit Databricks Runtime 18.0 und höher.
- Sie müssen über entsprechende Berechtigungen für Objekte verfügen, die innerhalb der Transaktion geändert wurden. Berechtigungen werden bei der Ausführung jeder einzelnen Anweisung überprüft.
Beispiele
Die folgenden Beispiele veranschaulichen allgemeine Transaktionsmuster mithilfe von BEGIN ATOMIC ... END;.
Koordinieren von Aktualisierungen über mehrere Tabellen hinweg
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;
Daten vor dem Commit validieren
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;
Verwandte Artikel
- BEGIN TRANSACTION: Starten einer interaktiven Transaktion mit manueller Commit-/Rollbacksteuerung
- COMMIT: Commit für eine interaktive Transaktion
- ROLLBACK: Zurücksetzen einer interaktiven Transaktion
-
Compound-Anweisung:
BEGIN ... ENDBlöcke ohne dasATOMICSchlüsselwort - Transaktionen: Übersicht über die Transaktionsunterstützung
- Transaktionsmodi: Detaillierte Muster und Beispiele für nicht interaktive und interaktive Transaktionen