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
Mengembalikan transaksi saat ini, membuang semua perubahan yang dilakukan sejak awal transaksi. Untuk persyaratan dan pola penggunaan untuk transaksi interaktif, lihat Transaksi interaktif.
Sintaksis
ROLLBACK [ TRANSACTION | WORK ]
Parameter-parameternya
Pernyataan ini tidak memiliki parameter.
Catatan
- Jika tidak ada transaksi aktif, menjalankan
ROLLBACKtidak mengakibatkan kesalahan. - Jika operasi dalam transaksi menghasilkan kesalahan, transaksi akan memasuki status dibatalkan. Operasi baca dan tulis berikutnya menimbulkan kesalahan hingga transaksi dibatalkan secara eksplisit oleh pengguna.
- Untuk menjalankan pernyataan ini, Anda harus memiliki transaksi aktif dan izin yang sesuai pada semua objek yang telah dibaca atau dimodifikasi dalam transaksi.
Examples
Contoh berikut menunjukkan cara mengembalikan transaksi interaktif.
Putar kembali dasar
Jalankan setiap pernyataan dalam sel 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;
Menangani kesalahan eksekusi
Ketika pernyataan dalam transaksi gagal, Anda harus secara jelas membatalkan sebelum memulai transaksi yang baru. Jalankan setiap pernyataan dalam sel terpisah:
BEGIN TRANSACTION;
-- A query that causes a division by zero error
SELECT 1/0;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
Menangani kesalahan pengurai
Kesalahan pengurai juga memerlukan pembatalan eksplisit. Jalankan setiap pernyataan dalam sel terpisah:
BEGIN TRANSACTION;
-- A query that causes a parsing error
SELLLLLLECT 1;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
Pembatalan berdasarkan kondisi
Anda dapat menggunakan ROLLBACK untuk logika kondisional berdasarkan aturan bisnis. Jalankan setiap pernyataan dalam sel terpisah:
BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Check a condition and rollback if not met
BEGIN
DECLARE total_balance INT;
SET total_balance = (SELECT SUM(balance) FROM accounts);
IF total_balance < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END;
Gulung balik setelah penerapan gagal
Jika COMMIT mengalami kegagalan, Anda harus secara eksplisit melakukan rollback. Jalankan setiap pernyataan dalam sel terpisah:
BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Attempt to commit
COMMIT;
-- If COMMIT fails (e.g., due to write conflict),
-- the transaction is aborted
-- You must explicitly roll back before starting a new transaction
ROLLBACK;
Artikel terkait
- BEGIN TRANSACTION (transaksi interaktif): Mulai transaksi interaktif
- COMMIT: Melakukan transaksi interaktif dan membuat semua perubahan permanen
- Pernyataan senyawa ATOMIC (transaksi non-interaktif): Jalankan beberapa pernyataan SQL sebagai transaksi atom tunggal dengan penerapan dan pembatalan otomatis
- Transaksi: Gambaran umum dukungan transaksi, persyaratan, dan batasan
- Mode transaksi: Pola dan contoh terperinci untuk transaksi non-interaktif dan interaktif