Aracılığıyla paylaş


COMMIT

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL

Geçerli etkileşimli işlemi işler ve değiştirilen tüm tablolardaki tüm değişiklikleri kalıcı hale getirir. Etkileşimli işlemlere yönelik gereksinimler ve kullanım desenleri için bkz. Etkileşimli işlemler.

Sözdizimi

COMMIT [ TRANSACTION | WORK ]

Parametreler

Bu deyimin parametresi yok.

Notlar

  • Etkin bir işlem yoksa yürütülürken COMMITNO_ACTIVE_TRANSACTION hatası oluşur.
  • COMMIT Başarısız olursa, işlem durduruldu ve yeni bir işleme başlamadan önce işlem durumunu sıfırlamak için açıkça çalıştırmanız ROLLBACK gerekir. Hataların yaygın nedenleri arasında diğer eşzamanlı işlemlerle yaşanan yazma çakışmaları yer alır.
  • Bu deyimi yürütmek için etkin bir işlem ve işlem içinde okunan veya değiştirilen tüm nesneler üzerinde uygun izinlere sahip olmanız gerekir.

Örnekler

Aşağıdaki örneklerde etkileşimli işlemlerin nasıl işllği gösterilmektedir.

Temel 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');
-- Update the newly inserted data
UPDATE customers SET name = 'Updated Customer Name' WHERE id = 101;
-- Query sees the updated value within the transaction
SELECT name FROM customers WHERE id = 101;
-- Returns 'Updated Customer Name'
-- Commit makes changes visible to other transactions
COMMIT;

Commit hatasıyla başa çıkmak

COMMIT Çakışmalar veya diğer hatalar nedeniyle başarısız olursa, açıkça geri dönmeniz gerekir. Her deyimi ayrı ayrı çalıştırın.

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;