次の方法で共有


コミットする

適用対象: チェック マークあり 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;