Aracılığıyla paylaş


İŞLEM BAŞLAT

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL

Birden çok SQL deyimini işlenebilen veya geri alınabilen tek bir iş birimi halinde gruplandıran yeni bir etkileşimli işlem başlatır.

Etkileşimli işlemlere alternatif olarak, söz dizimini BEGIN ATOMIC ... END; kullanarak etkileşimli olmayan işlemler tanımlayabilirsiniz. ATOMIC bileşik deyimi için bkz.

Sözdizimi

BEGIN { TRANSACTION | WORK }

Parametreler

Bu deyimin parametresi yok.

Notlar

  • Etkileşimli bir işlem zaten etkinse, BEGIN TRANSACTION yeniden yürütülmesi TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION hatasıyla sonuçlanır. Etkileşimli işlemler iç içe yerleştirmeyi desteklemez.
  • BEGIN TRANSACTION ve BEGIN WORK eşdeğer söz dizimi alternatifleridir.

Örnekler

Aşağıdaki örneklerde yaygın etkileşimli işlem desenleri gösterilmektedir.

Temel tablolar arası işlem

Her deyimi ayrı ayrı çalıştırın.

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;

Kendi Yazdıklarını Oku

Her deyimi ayrı ayrı çalıştırın.

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;

Rollback ile işlem

Her deyimi ayrı ayrı çalıştırın.

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;

Kaydedilmemiş değişikliklerin görünürlüğü

Bu örnekte, bir işlem içindeki değişiklikler işlem tamamlanana kadar diğer oturumlara görünmez. Her deyimi ayrı ayrı çalıştırın.

Oturum 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

Oturum 2 (eşzamanlı):

-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows

Oturum 1 (devam):

-- Now commit the transaction
COMMIT TRANSACTION;

Oturum 2 (işlemeden sonra):

-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product

Eşzamanlı değişikliklerin görünürlüğü

Bu örnekte, işlem dışında yapılan eşzamanlı değişiklikler işlem tarafından görülmeyebilir. Azure Databricks ilk erişimde her tablonun tutarlı bir anlık görüntüsünü yakalar ve bu tablonun sonraki tüm okumaları bu anlık görüntüyü kullanır (yinelenebilir okuma). Her deyimi ayrı ayrı çalıştırın.

Oturum 1 (bir işlem başlatın ve tabloyu okuyun):

BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1

Oturum 2 (eşzamanlı oturum bir satır ekler):

INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;

Oturum 1 (devam etti, tabloyu yeniden okuyun):

-- 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;

Bu, eşzamanlı değişikliklerden bağımsız olarak işlem genelinde tutarlı okumaları garanti eder.

  • ATOMIC bileşik deyimi (etkileşimli olmayan işlemler): Otomatik işleme ve geri alma ile birden çok SQL deyimini tek bir atomik işlem olarak çalıştırma
  • COMMIT: Etkileşimli bir işlem gerçekleştirme ve tüm değişiklikleri kalıcı hale getirme
  • ROLLBACK: Etkileşimli bir işlemi geri alma ve tüm değişiklikleri atma
  • İşlemler: İşlem desteğine, gereksinimlere ve sınırlamalara genel bakış
  • İşlem modları: Etkileşimli olmayan ve etkileşimli işlemler için ayrıntılı desenler ve örnekler
  • BEGIN END bileşik deyimi: BEGIN ... END anahtar sözcüğü olmayan ATOMIC bloklar