Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Elindít egy új interaktív tranzakciót, amely több SQL-utasítást csoportosít egyetlen munkaegységbe, amely véglegesíthető vagy visszaállítható.
Az interaktív tranzakciók alternatívájaként a szintaxis használatával BEGIN ATOMIC ... END; definiálhat nem interaktív tranzakciókat. Lásd ATOMIC összetett utasítás.
Szemantika
BEGIN { TRANSACTION | WORK }
Paraméterek
Ez az utasítás nem rendelkezik paraméterekkel.
Jegyzetek
- Ha egy interaktív tranzakció már aktív, akkor a
BEGIN TRANSACTIONújbóli végrehajtása a TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION hibát eredményez. Az interaktív tranzakciók nem támogatják a beágyazást. -
BEGIN TRANSACTIONésBEGIN WORKegyenértékű szintaxis alternatívái.
Examples
Az alábbi példák a gyakori interaktív tranzakciós mintákat mutatják be.
Egyszerű táblaközi tranzakció
Minden utasítást külön futtasson.
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;
Saját írások olvasása
Minden utasítást külön futtasson.
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;
Visszaállítható tranzakció
Minden utasítást külön futtasson.
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;
A nem véglegesített módosítások láthatósága
Ebben a példában a tranzakción belüli módosítások csak a tranzakció véglegesítése után láthatók a többi munkamenetben. Minden utasítást külön futtasson.
1. munkamenet:
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
2. munkamenet (egyidejű):
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
1. munkamenet (folytatás):
-- Now commit the transaction
COMMIT TRANSACTION;
2. munkamenet (véglegesítés után):
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Egyidejű módosítások láthatósága
Ebben a példában a tranzakción kívül végrehajtott egyidejű módosítások nem láthatók a tranzakcióban. Az Azure Databricks az első hozzáféréskor rögzíti az egyes táblák konzisztens pillanatképét, és a tábla minden későbbi olvasása ezt a pillanatképet használja (megismételhető olvasás). Minden utasítást külön futtasson.
1. munkamenet (tranzakció indítása és a tábla elolvasása):
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
2. munkamenet (az egyidejű munkamenet hozzáad egy sort):
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
1. munkamenet (folytatás, a táblázat újraolvasása):
-- 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;
Ez garantálja, hogy az egyidejű módosításoktól függetlenül a tranzakció során konzisztens beolvasások legyenek.
Kapcsolódó cikkek
- ATOMIC összetett utasítás (nem interaktív tranzakciók):Több SQL-utasítás futtatása egyetlen atomi tranzakcióként automatikus véglegesítéssel és visszaállítással
- VÉGLEGESÍTÉS: Interaktív tranzakció véglegesítése és az összes módosítás véglegesítése
- VISSZAÁLLÍTÁS: Interaktív tranzakció visszaállítása és az összes módosítás elvetése
- Tranzakciók: A tranzakciótámogatás, a követelmények és a korlátozások áttekintése
- Tranzakciós módok: Részletes minták és példák nem interaktív és interaktív tranzakciókhoz
-
BEGIN END összetett utasítás:
BEGIN ... ENDblokkokATOMICkulcsszó nélkül