트랜잭션 롤백

설명

ROLLBACK WORK 문은 마지막 트랜잭션 이후의 모든 데이터베이스의 갱신을 제거한다. WORK 키워드는 생략 가능하다. 이것은 데이터베이스에 영구적으로 입력하기 전에 부정확하고 불필요한 갱신을 무효화할 수 있다. 트랜잭션 동안 획득한 모든 잠금은 해제된다.

구문

ROLLBACK [ WORK ]

예제

다음 예제는 동일한 테이블의 정의와 행을 수정하는 두 개의 명령을 보여주고 있다.

ALTER TABLE code DROP s_name;

INSERT INTO code (s_name, f_name) VALUES ('D','Diamond');

 

ERROR: s_name is not defined.

code 테이블의 정의에서 s_name 컬럼이 이전에 제거되었기 때문에 INSERT 문의 실행은 실패한다. code 테이블에 입력하려고 했던 데이터는 틀리지 않으나 테이블에서 컬럼이 잘못 제거되었다. 이 시점에서 code 테이블의 원래 정의를 복원하기 위해서 ROLLBACK WORK 문을 사용할 수 있다.

ROLLBACK WORK;

이후에 ALTER CLASS 명령을 다시 입력하여 s_name 컬럼을 제거하며, INSERT 문을 수정한다. 트랜잭션이 중단되었기 때문에 INSERT 명령은 다시 입력되어야 한다. 데이터베이스 갱신이 의도한 대로 이루어졌으면 변경을 영구화하기 위해 트랜잭션을 커밋한다.

ALTER TABLE code drop s_name;

INSERT INTO code (f_name) VALUES ('Diamond');

 

COMMIT WORK;