적용 대상:
Databricks SQL
현재 트랜잭션을 롤백하여 트랜잭션 시작 이후의 모든 변경 내용을 삭제합니다. 대화형 트랜잭션에 대한 요구 사항 및 사용 패턴은 대화형 트랜잭션을 참조하세요.
문법
ROLLBACK [ TRANSACTION | WORK ]
매개 변수
이 문에는 매개 변수가 없습니다.
Notes
- 활성 트랜잭션이 없으면 실행
ROLLBACK하면 오류가 발생하지 않습니다 . - 트랜잭션 내의 작업으로 인해 오류가 발생하면 트랜잭션이 중단된 상태가 됩니다. 후속 읽기 및 쓰기 작업은 사용자가 트랜잭션을 명시적으로 롤백할 때까지 오류와 함께 거부됩니다.
- 이 문을 실행하려면 트랜잭션 내에서 읽거나 수정한 모든 개체에 대해 활성 트랜잭션 및 적절한 권한이 있어야 합니다.
예제
다음 예제에서는 대화형 트랜잭션을 롤백하는 방법을 보여 줍니다.
기본 되돌리기
각 문을 별도의 셀에서 실행합니다.
BEGIN TRANSACTION;
-- Attempt an insert operation
INSERT INTO my_table VALUES (1, 'incorrect-value');
-- After discovering the mistake, rollback the transaction
-- (no changes are actually made to the tables)
ROLLBACK TRANSACTION;
실행 오류 처리
트랜잭션 내의 문이 실패한 경우, 새 트랜잭션을 시작하기 전에 반드시 롤백을 명시적으로 수행해야 합니다. 각 문을 별도의 셀에서 실행합니다.
BEGIN TRANSACTION;
-- A query that causes a division by zero error
SELECT 1/0;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
파서 오류 처리
파서 오류에는 명시적 롤백도 필요합니다. 각 문을 별도의 셀에서 실행합니다.
BEGIN TRANSACTION;
-- A query that causes a parsing error
SELLLLLLECT 1;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
조건부 롤백
비즈니스 규칙에 따라 조건부 논리에 사용할 ROLLBACK 수 있습니다. 각 문을 별도의 셀에서 실행합니다.
BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Check a condition and rollback if not met
BEGIN
DECLARE total_balance INT;
SET total_balance = (SELECT SUM(balance) FROM accounts);
IF total_balance < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END;
커밋 실패 후 되돌리기
실패하면 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(대화형 트랜잭션): 대화형 트랜잭션 시작
- COMMIT: 대화형 트랜잭션 커밋 및 모든 변경 내용 영구화
- ATOMIC 복합 문(비대화형 트랜잭션): 자동 커밋 및 롤백을 사용하여 여러 SQL 문을 단일 원자성 트랜잭션으로 실행
- 트랜잭션: 트랜잭션 지원, 요구 사항 및 제한 사항 개요
- 트랜잭션 모드: 비대화형 및 대화형 트랜잭션에 대한 자세한 패턴 및 예제