-
[SQL] TCL - ROLLBACK, COMMIT, SAVEPOINTDatabase/SQL (oracle, mysql) 2019. 5. 30. 11:34
[SQL] TCL - ROLLBACK, COMMIT, SAVEPOINT
- TRANSACTION - 데이터 처리의 한 단위 - 처음부터 commit까지의 작업
- 오라클에서 발생하는 DML들을 하나의 논리적인 작업 단위(트랜잭션)로 처리한다.
( commit 이나 rollback이 사용되기 전까지 계속 처리한다. )
- 하나의 트랜잭션은 ALL - or -Nothing 방식으로 처리된다.
- savepoint는 특정지점으로 작업을 취소해서 rollback하는 것이다.
rollback to sp2; - SP2지점으로 롤백해줘!
목적
- 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구한다.
1. COMMIT
- 저장되지 않은 모든 데이터를 데베에 저장하고 현재의 트랜잭션을 종료하라는 명령어
- commit이 되면 db에 저장이 된다.
- 커밋하면 트랜잭션의 처리과정이 모두 반영되며 하나의 트랜잭션 과정이 끝남
- 트랜잭션이 발생하는 경우 새롭게 생성되거나 갱신된 데이터들이 물리적으로 영구히 저장된다.
- DDL ( CREATE, DROP, ALTER, RENAME, TRUNCATE)은 AUTOCOMMIT
- 정상적인 종료시 (EXIT) 에도 COMMIT작업을 수행한다.
- 화면창의 X버튼은 비정상 적인 종료이다.
2. ROLLBACK [TO SAVEPOINT명]
- 저장되지 않은 모든 데이터 변경사항(DML)을 취소하고 현재의 트랜잭션을 끝내라는 명령
- 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의상태로 되돌리는 것
- 이전 상태로 되돌아가 지금까지 수행했던 데이터베이스의 변경을 모두 무효화한다.
- 비정상적인 종료시 ROLLBACK을 수행한다.
3. SAVEPOINT: 저장점
SAVEPOINT 저장점명;
저장하고 싶은 지점마다 savepoint 변수명을 해주면 된다.
주의점은 savepoint를 순차적으로 1,2,3 생성한다면 rollback 실행시 savepoint 1을 실행한후 savepoint 3을 실행한다면 에러가 난다 . 왜? 이미 마지막 savepoint 3은 rollback을 해서 지나간 구간이기 때문에 되돌릴 수 없다.
반응형'Database > SQL (oracle, mysql)' 카테고리의 다른 글
[SQL] 참조 CASCADE관한 설명 (0) 2019.05.30 [SQL] 무결성 제약조건 (0) 2019.05.30 [SQL] MERGE - 병합 (0) 2019.05.29 [SQL] DML - INSERT, DELETE, UPDATE (데이터 조작어) (0) 2019.05.29 [SQL] DDL - CREATE, DROP, ALTER, RENAME, TRUNCATE (0) 2019.05.28