Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Zahájí novou interaktivní transakci, která seskupí více příkazů SQL do jedné jednotky práce, kterou lze potvrdit nebo vrátit zpět.
Jako alternativu k interaktivním transakcím můžete definovat neinteraktivní transakce pomocí BEGIN ATOMIC ... END; syntaxe. Viz složený příkaz ATOMIC.
Syntaxe
BEGIN { TRANSACTION | WORK }
Parametry
Tento příkaz nemá žádné parametry.
Poznámky
- Pokud je interaktivní transakce již aktivní, opětovné spuštění
BEGIN TRANSACTIONzpůsobí chybu TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION. Interaktivní transakce nepodporují vnoření. -
BEGIN TRANSACTIONaBEGIN WORKjsou ekvivalentní alternativy syntaxe.
Příklady
Následující příklady ukazují běžné interaktivní vzorce transakcí.
Základní transakce kontingenční tabulky
Jednotlivé příkazy spusťte samostatně.
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;
Čtení vlastních zápisů
Jednotlivé příkazy spusťte samostatně.
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;
Transakce s vrácením zpět
Jednotlivé příkazy spusťte samostatně.
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;
Viditelnost nepotvrzených změn
V tomto příkladu nejsou změny v rámci transakce viditelné pro jiné relace, dokud transakce nebude potvrzena. Jednotlivé příkazy spusťte samostatně.
Sezení 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
Sekce 2 (souběžná):
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
Sezení 1 (pokračování):
-- Now commit the transaction
COMMIT TRANSACTION;
Relace 2 (po potvrzení):
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Viditelnost souběžných změn
V tomto příkladu nejsou pro transakci viditelné souběžné změny provedené mimo transakci. Azure Databricks zachycuje konzistentní snímek každé tabulky při prvním přístupu a všechna následná čtení této tabulky používají tento snímek (opakovatelné čtení). Jednotlivé příkazy spusťte samostatně.
Sezení 1 (zahájení transakce a přečtení tabulky):
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
Sezení 2 (souběžné sezení přidá řádek):
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
Sezení 1 (pokračování, opětovné čtení tabulky):
-- 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;
To zaručuje konzistentní čtení v rámci transakce bez ohledu na souběžné úpravy.
Související články
- Atomic compound statement (neinteraktivní transakce):: Spuštění více příkazů SQL jako jedné atomické transakce s automatickým potvrzením a vrácením zpět
- COMMIT: Potvrdit interaktivní transakci a učinit všechny změny trvalými
- VRÁCENÍ: Vrácení interaktivní transakce a odstranění všech změn
- Transakce: Přehled podpory transakcí, požadavků a omezení
- Režimy transakcí: Podrobné vzory a příklady pro neinteraktivní a interaktivní transakce
-
Složený příkaz BEGIN END:
BEGIN ... ENDbloky bez klíčovéhoATOMICslova