Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Påbörjar en ny interaktiv transaktion som grupperar flera SQL-instruktioner i en enda arbetsenhet som kan checkas in eller återställas.
Som ett alternativ till interaktiva transaktioner kan du definiera icke-interaktiva transaktioner med hjälp av syntaxen BEGIN ATOMIC ... END; . Se ATOMIC-sammansatt sats.
Syntax
BEGIN { TRANSACTION | WORK }
Parameters
Den här uttalandet har inga parametrar.
Notes
- Om en interaktiv transaktion redan är aktiv resulterar att köra
BEGIN TRANSACTIONigen i ett TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION fel. Interaktiva transaktioner stöder inte nästning. -
BEGIN TRANSACTIONochBEGIN WORKär motsvarande syntaxalternativ.
Exempel
Följande exempel visar vanliga interaktiva transaktionsmönster.
Grundläggande transaktion mellan tabeller
Kör varje instruktion separat.
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;
Läs-dina-egna-skrivningar
Kör varje instruktion separat.
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 med återställning
Kör varje instruktion separat.
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;
Synlighet för oöverförda ändringar
I det här exemplet är ändringar i en transaktion inte synliga för andra sessioner förrän transaktionen har checkats in. Kör varje instruktion separat.
Session 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
Session 2 (samtidig):
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
Session 1 (fortsatt):
-- Now commit the transaction
COMMIT TRANSACTION;
Session 2 (efter incheckning):
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Synlighet för samtidiga ändringar
I det här exemplet är samtidiga ändringar som görs utanför transaktionen inte synliga för transaktionen. Azure Databricks samlar in en konsekvent ögonblicksbild av varje tabell vid första åtkomsten, och alla efterföljande läsningar av tabellen använder den här ögonblicksbilden (repeterbar läsning). Kör varje instruktion separat.
Session 1 (starta en transaktion och läs tabellen):
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
Session 2 (samtidig session lägger till en rad):
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
Session 1 (fortsatt, läs tabellen igen):
-- 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;
Detta garanterar konsekventa läsningar i hela transaktionen, oavsett samtidiga ändringar.
Relaterade artiklar
- ATOMIC-sammansatt instruktion (icke-interaktiva transaktioner): Kör flera SQL-instruktioner som en enda atomisk transaktion med automatisk incheckning och återställning
- COMMIT: Genomför en interaktiv transaktion och gör alla ändringar permanenta
- ÅTERSTÄLLNING: Återställ en interaktiv transaktion och ignorera alla ändringar
- Transaktioner: Översikt över transaktionsstöd, krav och begränsningar
- Transaktionslägen: Detaljerade mönster och exempel för icke-interaktiva och interaktiva transaktioner
-
BEGIN END-sammansatt sats:
BEGIN ... ENDblock utan nyckelordetATOMIC