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
Memulai transaksi interaktif baru yang mengelompokkan beberapa pernyataan SQL ke dalam satu unit kerja yang dapat diterapkan atau digulung balik.
Sebagai alternatif untuk transaksi interaktif, Anda dapat menentukan transaksi non-interaktif menggunakan BEGIN ATOMIC ... END; sintaks. Lihat pernyataan majemuk ATOMIC.
Sintaksis
BEGIN { TRANSACTION | WORK }
Parameter-parameternya
Pernyataan ini tidak memiliki parameter.
Catatan
- Jika transaksi interaktif sudah aktif, menjalankan
BEGIN TRANSACTIONlagi akan menghasilkan kesalahan TRANSACTION_NOT_SUPPORTED.NESTED_TRANSACTION. Transaksi interaktif tidak mendukung bersarang. -
BEGIN TRANSACTIONdanBEGIN WORKmerupakan alternatif sintaks yang setara.
Examples
Contoh berikut menunjukkan pola transaksi interaktif umum.
Transaksi dasar antar tabel
Jalankan setiap pernyataan secara terpisah.
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;
Baca-tulis-anda-sendiri
Jalankan setiap pernyataan secara terpisah.
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;
Transaksi dengan pembatalan
Jalankan setiap pernyataan secara terpisah.
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;
Visibilitas perubahan yang tidak diterapkan
Dalam contoh ini, perubahan dalam transaksi tidak terlihat oleh sesi lain hingga transaksi dilakukan. Jalankan setiap pernyataan secara terpisah.
Sesi 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
Sesi 2 (bersamaan):
-- This query does not see the uncommitted data from Session 1
SELECT * FROM products WHERE id = 999;
-- Returns no rows
Sesi 1 (dilanjutkan):
-- Now commit the transaction
COMMIT TRANSACTION;
Sesi 2 (setelah commit):
-- Now the query can see the committed data
SELECT * FROM products WHERE id = 999;
-- Returns the new product
Visibilitas perubahan bersamaan
Dalam contoh ini, perubahan bersamaan yang dilakukan di luar transaksi tidak terlihat oleh transaksi. Azure Databricks mengambil rekam jepret yang konsisten dari setiap tabel pada akses pertama, dan semua bacaan berikutnya dari tabel tersebut menggunakan rekam jepret ini (baca berulang). Jalankan setiap pernyataan secara terpisah.
Sesi 1 (mulai transaksi dan baca tabel):
BEGIN TRANSACTION;
-- Read the table; captures a snapshot of orders at this point
SELECT COUNT(*) FROM orders;
-- Returns: 1
Sesi 2 (sesi bersamaan menambahkan baris):
INSERT INTO orders VALUES (2, 'Product B', 75.00);
COMMIT;
Sesi 1 (lanjutan, baca ulang tabel):
-- 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;
Ini menjamin pembacaan yang konsisten sepanjang transaksi, terlepas dari modifikasi bersamaan.
Artikel terkait
- Pernyataan senyawa ATOMIC (transaksi non-interaktif): Jalankan beberapa pernyataan SQL sebagai transaksi atom tunggal dengan penerapan dan pembatalan otomatis
- COMMIT: Melakukan transaksi interaktif dan membuat semua perubahan permanen
- ROLLBACK: Mengembalikan transaksi interaktif dan membuang semua perubahan
- Transaksi: Gambaran umum dukungan transaksi, persyaratan, dan batasan
- Mode transaksi: Pola dan contoh terperinci untuk transaksi non-interaktif dan interaktif
-
BEGIN END compound statement:
BEGIN ... ENDmemblokir tanpaATOMICkata kunci