Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime 18.0 dan di atas
Menerapkan blok Skrip SQL yang dapat berisi urutan pernyataan SQL, pernyataan kontrol aliran, deklarasi variabel lokal, dan penangan pengecualian. Ketika ditandai sebagai ATOMIC, blok berjalan sebagai unit transaksional di mana semua pernyataan berhasil bersama-sama atau gagal bersama-sama.
Sintaksis
BEGIN ATOMIC
statement1;
statement2;
...
END;
Parameter-parameternya
Tidak ada. Kata ATOMIC kunci memodifikasi perilaku pernyataan gabungan .
Deskripsi
Menandai pernyataan majemuk sebagai blok transaksi atom. Semua pernyataan dalam blok berjalan sebagai satu unit transaksional—baik semua pernyataan berhasil bersama-sama, atau semua perubahan digulung balik jika ada pernyataan yang gagal. Azure Databricks secara otomatis menerapkan perubahan ketika blok berhasil diselesaikan, atau mengembalikan semua perubahan jika ada pernyataan yang gagal.
BEGIN ATOMIC ... END blok dapat disarangkan dalam blok atom lainnya. Blok dalam diratakan ke dalam transaksi luar—semua pernyataan berjalan sebagai bagian dari satu transaksi yang lebih besar. Ini bukan transaksi berlapis. Blok atom tidak boleh berisi blok non-atomik BEGIN ... END .
Ini adalah transaksi non-interaktif—Anda tidak perlu menjalankan COMMIT atau ROLLBACK secara manual.
Persyaratan
- Semua tabel yang termasuk dalam transaksi multi-tabel dan multi-pernyataan harus:
- Jadilah tabel terkelola Unity Catalog (Delta atau Iceberg)
- Telah diaktifkan komit Katalog
- Gunakan gudang SQL, komputasi tanpa server, atau kluster yang menjalankan Databricks Runtime 18.0 ke atas.
- Anda harus memiliki izin yang sesuai pada objek yang dimodifikasi dalam transaksi. Hak istimewa diperiksa saat setiap pernyataan berjalan.
Examples
Contoh berikut menunjukkan pola transaksi umum menggunakan BEGIN ATOMIC ... END;.
Mengoordinasikan pembaruan di beberapa tabel
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;
Memvalidasi data sebelum melakukan
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;
Artikel terkait
- BEGIN TRANSACTION: Memulai transaksi interaktif dengan kontrol penerapan/pembatalan manual
- COMMIT: Melakukan transaksi interaktif
- ROLLBACK: Mengembalikan transaksi interaktif
-
Pernyataan gabungan:
BEGIN ... ENDmemblokir tanpaATOMICkata kunci - Transaksi: Gambaran umum dukungan transaksi
- Mode transaksi: Pola dan contoh terperinci untuk transaksi non-interaktif dan interaktif