
오라클의 트랜잭션 롤백은 COMMIT 명령어를 사용하여 트랜잭션의 변경 사항을 데이터베이스에 저장하는 것을 취소하여 동작합니다. 트랜잭션 롤백은 ROLLBACK 명령어를 사용하여 수행할 수 있습니다.
ROLLBACK 명령어는 다음과 같은 형태로 사용할 수 있습니다.
- ROLLBACK; : 현재 세션의 트랜잭션을 롤백합니다.
- ROLLBACK TO SAVEPOINT; : 지정된 SAVEPOINT까지 롤백합니다.
SAVEPOINT는 트랜잭션 내에서 특정 지점을 지정하여 롤백할 수 있는 기능입니다. SAVEPOINT를 지정한 후, 롤백을 수행할 때 SAVEPOINT까지 롤백됩니다.
트랜잭션 롤백을 수행할 때 발생할 수 있는 에러를 미리 예방하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.
- 트랜잭션을 COMMIT하기 전에 롤백을 수행하는 명령어를 백업으로 저장합니다.
- 트랜잭션을 롤백하기 전에 SAVEPOINT를 지정하여 롤백할 수 있는 지점을 미리 지정합니다.
- 트랜잭션을 롤백하기 전에 COMMIT을 수행하지 않도록 주의합니다.
예제를 통해 트랜잭션 롤백을 수행하는 방법을 확인해 보겠습니다.
#hostingforum.kr
sql
-- 트랜잭션을 시작합니다.
BEGIN
DBMS_OUTPUT.PUT_LINE('트랜잭션을 시작합니다.');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
-- SAVEPOINT를 지정합니다.
BEGIN
DBMS_OUTPUT.PUT_LINE('SAVEPOINT를 지정합니다.');
SAVEPOINT savepoint1;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO SAVEPOINT savepoint1;
END;
-- 트랜잭션을 롤백합니다.
BEGIN
DBMS_OUTPUT.PUT_LINE('트랜잭션을 롤백합니다.');
ROLLBACK;
END;
이 예제에서는 트랜잭션을 시작하고, SAVEPOINT를 지정한 후, 트랜잭션을 롤백하는 방법을 확인할 수 있습니다.
2025-07-11 06:26