--테이블 생성 및 수정
CREATE TABLE DEPT_TCL AS SELECT * FROM DEPT;
INSERT INTO DEPT_TCL VALUES(50, 'DATABASE', 'SEOUL');
UPDATE DEPT_TCL SET LOC='BUSAN' WHERE DEPTNO = 40;
DELETE FROM DEPT_TCL WHERE DNAME = 'RESEARCH';
SELECT * FROM DEPT_TCL;
테이블을 만들고 수정한 후 명령 프롬프트로 SQLPLUS에 접속
INSERT, UPDATE, DELETE가 아무것도 일어나지 않은 상태임
ROLLBACK;
COMMIT;
ROLLBACK 후 COMMIT까지 하면 적용된 사실을 알 수 있음
COMMIT명령어가 실행되는 시점의 상황이 반영됨
--!!!
INSERT INTO DEPT_TCL VALUES(60, 'DATABASE', 'SEOUL');
INSERT INTO DEPT_TCL VALUES(70, 'DATABASE', 'SEOUL');
INSERT INTO DEPT_TCL VALUES(80, 'DATABASE', 'SEOUL');
ROLLBACK;
이 상태에서 ROLLBACK을 실행하면 --!!!로 돌아감
INSERT INTO DEPT_TCL VALUES(60, 'DATABASE', 'SEOUL');
SAVEPOINT SP1;
INSERT INTO DEPT_TCL VALUES(70, 'DATABASE', 'SEOUL');
SAVEPOINT SP2;
INSERT INTO DEPT_TCL VALUES(80, 'DATABASE', 'SEOUL');
ROLLBACK TO SP2;
COMMIT;
지정된 지점으로 ROLLBACK이 일어남
COMMIT을 안하면 한쪽에서는 삭제가 일어나도 다른쪽에서는 삭제가 안됨 -> 작업자 DB에서만 삭제된것
이 상태에서 지우려고 하면 LOCK이 걸렸기 때문에 아무런 작업도 할 수 없음. 사진에서도 실행되지 않고 멈춰 있는 것을 알 수 있음. 즉, 조회는 가능하지만 조작이 되지 않은 것을 알 수 있음
신한은 개발용, 테스트용, 운영용 DB가 따로 있음!