트랜잭션 롤백
트랜잭션을 롤백하면 변경 사항이 실행 취소됩니다. 현재 트랜잭션 전체를 롤백하거나 지정된 저장점에만 트랜잭션을 롤백할 수 있습니다.
현재 트랜잭션을 지정된 저장점에만 롤백하려면 TO SAVEPOINT 절과 함께 ROLLBACK 문을 사용해야 합니다.
현재 트랜잭션 전체를 롤백하려면 TO SAVEPOINT 절 없이 ROLLBACK 문을 사용하거나 SQL Developer 환경의 경우 변경 사항 롤백과 아이콘을 사용하십시오.
현재 트랜잭션 전체를 롤백하면 다음 작업이 수행됩니다.
-
트랜잭션이 종료됨
-
모든 변경 사항이 취소됨
-
모든 저장점이 지워짐
-
모든 트랜잭션 잠금이 해제됨
지정된 저장점에만 현재 트랜잭션을 롤백하면 다음 작업이 수행됩니다.
-
트랜잭션이 종료되지 않음
-
지정된 저장점 이후에 수행된 변경 사항만 취소됨
-
지정된 저장점 이후의 저장점 집합만 지워짐(지정된 저장점 자체는 제외됨)
-
지정된 저장점 이후에 확보한 모든 테이블 및 행 잠금이 해제됨
지정된 저장점 이후에 잠긴 행에 액세스를 요청한 다른 트랜잭션은 해당 트랜잭션이 커밋되거나 롤백될 때까지 계속 대기해야 합니다. 잠긴 행에 액세스를 요청하지 않은 다른 트랜잭션은 행에 액세스를 요청하여 즉시 액세스할 수 있습니다.
SQL Developer에서 롤백의 효과를 확인하려면 새로 고침 아이콘을 눌러야 합니다.
예 3-7의 결과에서와 같이, REGIONS 테이블에는 'Middle East and Africa'라고 하는 지역과 'Africa'라고 하는 지역이 있습니다, 예 3-8에서는 이 문제를 수정하고(매우 간단한 트랜잭션) 변경 사항을 확인한 다음 트랜잭션을 롤백하고 롤백을 확인합니다.
예 3-8 전체 트랜잭션 롤백
트랜잭션 이전:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
결과:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
트랜잭션(테이블 변경):
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
결과:
1 row updated.
변경 사항 확인:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
결과:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
트랜잭션 롤백:
ROLLBACK;
결과:
Rollback complete.
롤백 확인:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
결과:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
참조: ROLLBACK 문에 대한 자세한 내용은 Oracle Database SQL Language Reference