Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
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 TRANSACTIONyeniden 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 TRANSACTIONveBEGIN WORKeş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.
İlgili makaleler
- 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 ... ENDanahtar sözcüğü olmayanATOMICbloklar