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
Beginnt eine neue interaktive Transaktion, die mehrere SQL-Anweisungen in einer einzigen Arbeitseinheit gruppiert, die zugesichert oder zurückgesetzt werden kann.
Als Alternative zu interaktiven Transaktionen können Sie nicht interaktive Transaktionen mithilfe der BEGIN ATOMIC ... END; Syntax definieren. Siehe ATOMIC-Verbundanweisung.
Syntax
BEGIN { TRANSACTION | WORK }
Parameter
Diese Anweisung hat keine Parameter.
Hinweise
- Wenn eine interaktive Transaktion bereits aktiv ist, führt die Ausführung
BEGIN TRANSACTIONerneut zu einem TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION Fehler. Interaktive Transaktionen unterstützen keine Schachtelung. -
BEGIN TRANSACTIONundBEGIN WORKsind gleichwertige Syntaxalternativen.
Beispiele
Die folgenden Beispiele veranschaulichen allgemeine interaktive Transaktionsmuster.
Grundlegende tabellenübergreifende Transaktion
Führen Sie jede Anweisung separat aus.
BEGIN TRANSACTION;
-- Insert a new record
INSERT INTO my_table VALUES (1, 'test');
-- Update records in another table
UPDATE another_table
SET value = 'updated'
WHERE id = 5;
-- Commit all changes in both tables atomically
COMMIT TRANSACTION;
Lies-eigene-Schreibvorgänge
Führen Sie jede Anweisung separat aus.
BEGIN TRANSACTION;
-- Insert new data
INSERT INTO customers VALUES (101, 'New Customer');
-- Query can see the inserted data within the same transaction
SELECT * FROM customers WHERE id = 101;
-- Returns the newly inserted row even though it's not yet committed
-- Update the newly inserted data
UPDATE customers SET name = 'Updated Customer Name' WHERE id = 101;
-- Query sees the updated value
SELECT name FROM customers WHERE id = 101;
-- Returns 'Updated Customer Name'
-- Commit makes changes visible to other transactions
COMMIT TRANSACTION;
Transaktion mit Rollback
Führen Sie jede Anweisung separat aus.
BEGIN TRANSACTION;
-- Attempt an insert operation
INSERT INTO my_table VALUES (1, 'incorrect-value');
-- After discovering the mistake, rollback the transaction
-- (no changes are actually made to the tables)
ROLLBACK TRANSACTION;
Sichtbarkeit nicht abgeschlossener Änderungen
In diesem Beispiel sind Änderungen innerhalb einer Transaktion erst dann für andere Sitzungen sichtbar, wenn die Transaktion zugesichert wurde. Führen Sie jede Anweisung separat aus.
Sitzung 1:
BEGIN TRANSACTION;
-- Insert new data
INSERT INTO products VALUES (999, 'New Product', 29.99);
-- At this point, Session 2 cannot see this data
-- You can see your own changes
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Sitzung 2 (gleichzeitig):
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
Sitzung 1 (fortgesetzt):
-- Now commit the transaction
COMMIT TRANSACTION;
Sitzung 2 (nach commit):
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Sichtbarkeit gleichzeitiger Änderungen
In diesem Beispiel sind gleichzeitige Änderungen, die außerhalb der Transaktion vorgenommen wurden, für die Transaktion nicht sichtbar. Azure Databricks erfasst eine konsistente Momentaufnahme jeder Tabelle beim ersten Zugriff, und alle nachfolgenden Lesevorgänge dieser Tabelle verwenden diese Momentaufnahme (wiederholbares Lesen). Führen Sie jede Anweisung separat aus.
Sitzung 1 (Starten einer Transaktion und Lesen der Tabelle):
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
Sitzung 2 (gleichzeitige Sitzung fügt eine Zeile hinzu):
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
Sitzung 1 (fortgesetzt, Tabelle erneut lesen):
-- Still reads from the original snapshot; the new row is not visible
SELECT COUNT(*) FROM orders;
-- Returns: 1 (unchanged, even though Session 2 committed a new row)
COMMIT;
Dies garantiert konsistente Lesevorgänge während der gesamten Transaktion, unabhängig von gleichzeitigen Änderungen.
Verwandte Artikel
- ATOMIC compound statement (nicht-interaktive Transaktionen): Führen Sie mehrere SQL-Anweisungen als eine einzige atomare Transaktion mit automatischem Commit und Rollback aus
- COMMIT: Eine interaktive Transaktion abschließen und alle Änderungen dauerhaft machen
- ROLLBACK: Zurücksetzen einer interaktiven Transaktion und Verwerfen aller Änderungen
- Transaktionen: Übersicht über Transaktionsunterstützung, Anforderungen und Einschränkungen
- Transaktionsmodi: Detaillierte Muster und Beispiele für nicht interaktive und interaktive Transaktionen
-
BEGIN END zusammengesetzte Anweisung:
BEGIN ... ENDBlöcke ohne dasATOMICSchlüsselwort