適用対象:
Databricks SQL
現在の対話型トランザクションをコミットし、変更されたすべてのテーブルに対するすべての変更を永続的にします。 対話型トランザクションの要件と使用パターンについては、「 対話型トランザクション」を参照してください。
構文
COMMIT [ TRANSACTION | WORK ]
パラメーター
このステートメントにはパラメーターがありません。
メモ
- アクティブなトランザクションがない場合、
COMMITを実行すると 、NO_ACTIVE_TRANSACTION エラーが発生します。 -
COMMIT失敗した場合、トランザクションは中止され、新しいトランザクションを開始する前にトランザクションの状態をリセットするためにROLLBACKを明示的に実行する必要があります。COMMITエラーの一般的な理由には、他の同時実行トランザクションとの書き込み競合が含まれます。 - このステートメントを実行するには、アクティブなトランザクションと、トランザクション内で読み取りまたは変更されたすべてのオブジェクトに対する適切なアクセス許可が必要です。
例示
次の例では、対話型トランザクションをコミットする方法を示します。
基本トランザクション
各ステートメントを個別に実行します。
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;
関連資料
- BEGIN TRANSACTION (対話型トランザクション): 対話型トランザクションを開始します
- ROLLBACK: 対話型トランザクションをロールバックし、すべての変更を破棄する
- ATOMIC 複合ステートメント (非対話型トランザクション):自動コミットとロールバックを使用して、複数の SQL ステートメントを 1 つのアトミック トランザクションとして実行します
- トランザクション: トランザクションのサポート、要件、および制限の概要
- トランザクション モード: 非対話型トランザクションと対話型トランザクションの詳細なパターンと例