Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Commence une nouvelle transaction interactive qui regroupe plusieurs instructions SQL dans une unité de travail unique qui peut être validée ou restaurée.
En guise d’alternative aux transactions interactives, vous pouvez définir des transactions non interactives à l’aide de la BEGIN ATOMIC ... END; syntaxe. Voir l’instruction composée ATOMIC.
Syntaxe
BEGIN { TRANSACTION | WORK }
Paramètres
Cette instruction n’a aucun paramètre.
Remarques
- Si une transaction interactive est déjà active, exécuter
BEGIN TRANSACTIONà nouveau entraîne une erreur TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION. Les transactions interactives ne prennent pas en charge l’imbrication. -
BEGIN TRANSACTIONetBEGIN WORKsont des alternatives de syntaxe équivalentes.
Exemples
Les exemples suivants illustrent des modèles de transaction interactifs courants.
Transaction de base entre tables
Exécutez chaque instruction séparément.
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;
Lecture de ses propres écritures
Exécutez chaque instruction séparément.
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;
Transaction avec annulation
Exécutez chaque instruction séparément.
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;
Visibilité des modifications non validées
Dans cet exemple, les modifications dans une transaction ne sont pas visibles par d’autres sessions tant que la transaction n’est pas validée. Exécutez chaque instruction séparément.
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 (simultanée) :
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
Session 1 (suite) :
-- Now commit the transaction
COMMIT TRANSACTION;
Session 2 (après validation) :
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Visibilité des modifications simultanées
Dans cet exemple, les modifications simultanées apportées en dehors de la transaction ne sont pas visibles par la transaction. Azure Databricks capture un instantané cohérent de chaque table au premier accès, et toutes les lectures suivantes de cette table utilisent cet instantané (lecture reproductible). Exécutez chaque instruction séparément.
Session 1 (démarrer une transaction et lire la table) :
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
Session 2 (session simultanée ajoute une ligne) :
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
Session 1 (suite, réécrit le tableau) :
-- 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;
Cela garantit des lectures cohérentes tout au long de la transaction, quelles que soient les modifications simultanées.
Articles connexes
- Instruction composée ATOMIC (transactions non interactives) : exécutez plusieurs instructions SQL en tant que transaction atomique unique avec validation et restauration automatiques
- COMMIT : Valider une transaction interactive et apporter toutes les modifications permanentes
- ROLLBACK : restaurer une transaction interactive et ignorer toutes les modifications
- Transactions : vue d’ensemble de la prise en charge des transactions, des exigences et des limitations
- Modes de transaction : modèles détaillés et exemples pour les transactions non interactives et interactives
-
Instruction composée BEGIN END :
BEGIN ... ENDblocs sans motATOMICclé