본문 바로가기

BackEnd/DataBase - Oracle

[Oracle] DML - 트랜잭션(Transaction)

논리적인 작업 단위
여러 DML이 모여서 하나의 트랜잭션으로 구성됨
DML 작업 후 commit 또는 rollback으로 트랜잭션 종료해야함

Oracle은 DML 수행 수 rollback이나 commit을 해야 완료되지만
SQL Server는 트랜잭션을 명시적으로 지정하지 않으면 자동 commit된다


이 글의 내용은 Oracle DB에만 해당하는 명령어다

 

 

commit (확정)

commit을 하고난 뒤에는 rollback하지 못한다

 

 


rollback (되돌리기)

되돌리기 실행 후 해당 savepoint 다음에 있는 모든 savepoint는 자동으로 삭제된다

 


기본 문법

rollback to savepoint insert_포인트명; 


하나의 DELETE문으로 100개의 레코드를 삭제할 때 이는 하나의 트랜잭션이기 때문에
50개는 삭제되고 중간에 문제가 발생하면 나머지 50개는 살아있는 상태가 되지 않는다는 것이다

이런 상황에서는 롤백을 활용하면 삭제된 50개의 레코드가 복원된다


 

savepoint (저장 지점)

해당 명령어를 입력한 위치에서 복원할 수 있는 저장 지점을 생성한다

기본 문법

 

savepoint insert_포인트명; -- 저장지점 생성 
roolback to savapoint; -- 최근에 실행된 저장지점으로 롤백