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.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 18.0 ve üzeri
SQL deyimleri dizisi, akış denetimi deyimleri, yerel değişken bildirimleri ve özel durum işleyicileri içerebilen bir SQL Betiği bloğu uygular.
ATOMIC olarak işaretlendiğinde, blok tüm ifadelerin eş zamanlı başarılı olduğu veya başarısız olduğu bir işlem birimi olarak çalışır.
Sözdizimi
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parametreler
Yok.
ATOMIC anahtar sözcüğü bileşik deyim davranışını değiştirir.
Açıklama
Bileşik ifadeyi atomik bir işlem bloğu olarak tanımlar. Bloktaki tüm deyimler tek bir işlem birimi olarak çalışır; tüm deyimler birlikte başarılı olur veya herhangi bir deyim başarısız olursa tüm değişiklikler geri alınır. Blok başarıyla tamamlandığında Azure Databricks değişiklikleri otomatik olarak işler veya herhangi bir deyim başarısız olursa tüm değişiklikleri geri alır.
BEGIN ATOMIC ... END bloklar diğer atomik blokların içinde iç içe yerleştirilebilir. İç blok dış işlemle birleştirilir; tüm ifadeler, tek bir daha büyük işlemin parçası olarak çalışır. Bu iç içe yerleştirilmiş bir işlem değildir. Atomik blok, atomik BEGIN ... END olmayan bir blok içeremez.
Bu bir etkileşimsiz işlemdir; COMMIT veya ROLLBACK manuel olarak çalıştırmanıza gerek yoktur.
Gereksinimler
- Birden çok deyimli, çok tablolu bir işlemde yazılan tüm tablolar şu gereksinimleri karşılamalıdır:
- Unity Kataloğu tarafından yönetilen tablolar (Delta veya Iceberg) olun
- Katalog tarafından yönetilen işlemelerin etkinleştirilmesi
- SQL ambarı, sunucusuz işlem veya Databricks Runtime 18.0 ve üzerini çalıştıran bir küme kullanın.
- İşlem içinde değiştirilen nesneler üzerinde uygun izinlere sahip olmanız gerekir. Her bir ifade çalıştırıldığında ayrıcalıklar denetlenir.
Örnekler
Aşağıdaki örneklerde BEGIN ATOMIC ... END; kullanılarak yapılan yaygın işlem modelleri gösterilmektedir.
Güncelleştirmeleri birden çok tablo arasında koordine edin
BEGIN ATOMIC
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
INSERT INTO audit_log VALUES (1, 2, 100, current_timestamp());
END;
İşlemeden önce verileri doğrulama
BEGIN ATOMIC
INSERT INTO staging_customers
SELECT * FROM external_source WHERE ingest_date = current_date();
IF (SELECT COUNT(*) FROM staging_customers WHERE email NOT LIKE '%@%') > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid email addresses found';
END IF;
MERGE INTO customers AS target
USING staging_customers AS source
ON target.customer_id = source.customer_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
END;
İlgili makaleler
- BEGIN TRANSACTION: El ile işleme/geri alma denetimi ile etkileşimli bir işlem başlatma
- COMMIT: Etkileşimli bir işlem yürütme
- ROLLBACK: Etkileşimli bir işlemi geri alma
-
Bileşik deyim:
BEGIN ... ENDanahtar sözcüğü olmayanATOMICbloklar - İşlemler: İşlem desteğine genel bakış
- İşlem modları: Etkileşimli olmayan ve etkileşimli işlemler için ayrıntılı desenler ve örnekler