적용 대상:
Databricks SQL
현재 대화형 트랜잭션을 커밋하여 수정된 모든 테이블에서 모든 변경 내용을 영구적으로 만듭니다. 대화형 트랜잭션에 대한 요구 사항 및 사용 패턴은 대화형 트랜잭션을 참조하세요.
문법
COMMIT [ TRANSACTION | WORK ]
매개 변수
이 문에는 매개 변수가 없습니다.
Notes
- 활성 트랜잭션이 없으면 실행하면
COMMITNO_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(대화형 트랜잭션): 대화형 트랜잭션 시작
- 롤백: 대화형 트랜잭션 롤백 및 모든 변경 내용 취소
- ATOMIC 복합 문(비대화형 트랜잭션): 자동 커밋 및 롤백을 사용하여 여러 SQL 문을 단일 원자성 트랜잭션으로 실행
- 트랜잭션: 트랜잭션 지원, 요구 사항 및 제한 사항 개요
- 트랜잭션 모드: 비대화형 및 대화형 트랜잭션에 대한 자세한 패턴 및 예제