트랜잭션(Transaction) : 데이터베이스에서 데이터를 처리하는 하나의 논리적인 작업 단위
COMMIT: 모든 작업들을 정상적으로 처리, 변경된 내용을 모두 영구 저장
ROLLBACK: 처리과정에서 발생한 변경 사항을 취소 이전의 상태로 되돌리기
자동 COMMIT : DDL(CREATE,ALTER,DROP),DCL(GRANT,REVOKE)은 자동으로 COMMIT됨
DML(INSERT,UPDATE,DELETE)은 COMMIT명령어 사용전까지는 복구(ROLLBACK) 가능
1. COMMIT
SQL Plus창 두개를 띄워놓고 실행
[첫번째 창]
SQL> create table b_dept2 as select * from dept;
SQL> insert into b_dept2 values(50,'SUPPORT','GWANGJU');
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SUPPORT GWANGJU
[두번째 창]
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
=> 50번 부서 반영 안됨
[첫번째 창]
SQL> COMMIT;
[두번째 창]
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SUPPORT GWANGJU
=> 50번 부서 반영됨
2. ROLLBACK
SQL> update b_dept2 set dname='TEST',loc='SUWON'
where deptno=50;
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 TEST SUWON
=> 50번 부서 변경, 메모리에 반영 되기 전 상태
SQL> rollback;
롤백이 완료되었습니다.
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SUPPORT GWANGJU
=> 50번 부서 원래대로 되돌림
3. SAVEPOINT
SQL> insert into b_dept2 values(60,'TESTING','SEOUL');
SQL> savepoint A; <-- SAVEPOINT
SQL>update b_dept2 set dname='IMSI',loc='BUSAN'
where deptno=50;
SQL>savepoint B; <-- SAVEPOINT
SQL>delete from b_dept2 where deptno=40;
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
50 IMSI BUSAN
60 TESTING SEOUL
=>60번 추가, 50번 변경, 40번 삭제 상태
SQL>rollback to B;
롤백이 완료되었습니다.
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 IMSI BUSAN
60 TESTING SEOUL
=> 40번 삭제 상태를 복구
sql>rollback to A;
롤백이 완료되었습니다.
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SUPPORT GWANGJU
60 TESTING SEOUL
=> 50번 변경 전으로 복구
sql> rollback;
롤백이 완료되었습니다.
SQL> select * from b_dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SUPPORT GWANGJU
=>60번 입력 전으로 복구
'Oracle Data Base' 카테고리의 다른 글
[SQL Plus] View (0) | 2019.07.02 |
---|---|
[SQL Plus] Sub Query (0) | 2019.07.01 |
[SQL Plus] JOIN - Equi , Outer, Self, ANSI (0) | 2019.06.27 |
[SQL Plus] DDL - create , alter, drop (0) | 2019.06.26 |
[SQL Plus] GROUP BY, HAVING, 그룹 함수 - min, max, sum, avg, count(*) (0) | 2019.06.26 |