適用於:
Databricks SQL
提交目前的互動交易,使所有修改資料表中的所有變更永久化。 關於互動式交易的需求與使用模式,請參見 互動式交易。
語法
COMMIT [ TRANSACTION | WORK ]
參數
此陳述沒有參數。
Notes
- 若無活躍交易,執行
COMMIT時會產生 NO_ACTIVE_TRANSACTION 錯誤。 - 如果
COMMIT失敗,交易會中止,你必須明確執行ROLLBACK以重置交易狀態,才能開始新的交易。COMMIT失敗的常見原因包括與其他同時進行的交易發生寫入衝突。 - 要執行此語句,您必須擁有一個活躍的交易,並對交易中讀取或修改的所有物件擁有適當的權限。
Examples
以下範例示範如何提交互動式交易。
基本交易
分別執行每個語句。
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;
自讀自寫
分別執行每個指令。
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 因衝突或其他錯誤失敗,則需要明確回復。 逐一執行每個語句。
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;
相關文章
- 開始交易(互動式交易):開始互動式交易
- 回滾:回滾互動式交易並丟棄所有變更
- ATOMIC 複合語句(非互動式交易):將多個 SQL 語句作為單一原子交易執行,並自動提交與回滾
- 交易:交易支援、需求與限制概述
- 交易模式:非互動與互動交易的詳細模式與範例