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 Schlüsselwort ATOMIC ändert das Verhalten der zusammengesetzten Anweisung.
Beschreibung
Markiert die zusammengesetzte Anweisung als atomaren Transaktionsblock. Alle Anweisungen innerhalb des Blocks werden als einzelne Transaktionseinheit ausgeführt: Entweder alle Anweisungen sind erfolgreich, oder alle Änderungen werden zurückgesetzt, wenn eine Anweisung fehlschlägt. Azure Databricks übernimmt automatisch Änderungen, wenn der Block erfolgreich abgeschlossen wird, oder setzt alle Änderungen zurück, wenn eine Anweisung fehlschlägt.
Du kannst keine BEGIN ATOMIC ... END-Blöcke verschachteln. Ein atomarer Block kann einen nicht-atomaren BEGIN ... END Block enthalten; diese Anweisungen laufen als Teil der äußeren atomaren Transaktion. Du kannst CALL eine gespeicherte atomare Prozedur aus einem atomaren Block aufrufen. Der Prozedurkörper wird in die äußere Transaktion abgeflacht. Alle Anweisungen werden als Teil einer einzelnen größeren Transaktion ausgeführt. Dies ist keine geschachtelte Transaktion.
Dies ist eine nicht interaktive Transaktion. Sie müssen COMMIT oder ROLLBACK nicht manuell ausführen.
Anforderungen
- Alle Tabellen, in die in einer Transaktion mit mehreren Anweisungen und mehreren Tabellen geschrieben wird, müssen folgende Voraussetzungen erfüllen:
- Es muss sich um von Unity Catalog verwaltete Tabellen (Delta oder Iceberg) handeln.
- Stellen Sie sicher, dass Katalog-Commits aktiviert sind
- 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 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;
Weitere Ressourcen
- BEGIN TRANSACTION: Starten einer interaktiven Transaktion mit manueller Commit-/Rollbacksteuerung
- COMMIT: Committen einer interaktiven Transaktion
- ROLLBACK: Zurücksetzen einer interaktiven Transaktion
-
Zusammengesetzte Anweisung:
BEGIN ... END-Blöcke ohne das SchlüsselwortATOMIC - Transaktionen: Übersicht über die Transaktionsunterstützung
- Transaktionsmodi: Detaillierte Muster und Beispiele für nicht interaktive und interaktive Transaktionen