[SQL] 081. 데이터 저장 및 취소하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
TCL
이번 챕터에선 TCL(Transction Control Language)이라고 하는 트랜잭션 제어 언어를 다룬다.
TCL은 DML을 다루는 언어라고 생각하면 편하다.
TCL의 종류는 다음과 같다.
-
COMMIT: COMMIT 이전에 수행했던 DML 작업을 데이터베이스에 영구히 반영
-
ROLLBACK: 마지막 COMMIT 명령어 수행 이후 DML문을 취소
-
SAVEPOINT: 특정 지점까지의 변경을 취소
예시로 EMP 테이블에 INSERT
로 데이터를 입력하고 COMMIT
한다.
추가적으로 UPDATE
로 데이터를 수정 후 ROLLBACK
한다.
이 경우 최종적으론 INSERT
까지만 반영되어 나타날 것이다.
-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
-- COMMIT: INSERT, UPDATE 등 DML 작업을 영구히 저장
INSERT INTO EMP(EMPNO, ENAME, SAL, DEPTNO)
VALUES(1122, 'JACK', 3000, 20);
COMMIT;
-- ROLLBACK: 마지막 COMMIT 이후 DML 작업을 취소
UPDATE EMP
SET SAL = 4000
WHERE ENAME = 'SCOTT';
ROLLBACK;
-- 테이블 확인
SELECT *
FROM EMP;
[결과]
데이터 추가는 그대로 수행되었고 수정은 ROLLBACK
으로 반영되지 않았다.
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
---|---|---|---|---|---|---|---|
7839 | KING | PRESIDENT | 1981-11-17 | 5000 | 10 | ||
7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | 30 | |
7782 | CLARK | MANAGER | 7839 | 1981-05-09 | 2450 | 10 | |
7566 | JONES | MANAGER | 7839 | 1981-04-01 | 2975 | 20 | |
7654 | MARTIN | SALESMAN | 7698 | 1981-09-10 | 1250 | 1400 | 30 |
7499 | ALLEN | SALESMAN | 7698 | 1981-02-11 | 1600 | 300 | 30 |
7844 | TURNER | SALESMAN | 7698 | 1981-08-21 | 1500 | 0 | 30 |
7900 | JAMES | CLERK | 7698 | 1981-12-11 | 950 | 30 | |
7521 | WARD | SALESMAN | 7698 | 1981-02-23 | 1250 | 500 | 30 |
7902 | FORD | ANALYST | 7566 | 1981-12-11 | 3000 | 20 | |
7369 | SMITH | CLERK | 7902 | 1980-12-11 | 800 | 20 | |
7788 | SCOTT | ANALYST | 7566 | 1982-12-22 | 3000 | 20 | |
7876 | ADAMS | CLERK | 7788 | 1983-01-15 | 1100 | 20 | |
7934 | MILLER | CLERK | 7782 | 1982-01-11 | 1300 | 10 | |
1122 | JACK | 3000 | 20 |
[참고]
현재 ORACLE 기반 SQL을 사용하며 그 중에서도 VS Code와 연동하여 사용 중이다.
DML 실습을 해보니 COMMIT
이 자동으로 수행된다.
그래서 이번 실습에서 ROLLBACK
이 적용되지 않아 AUTOCOMMIT
을 꺼두었다.
아래를 참고하자.
(마지막으로 이번 실습 후 테이블은 초기화 해두었다.)
-- AUTOCOMMIT 켜기
SET AUTOCOMMIT ON;
-- AUTOCOMMIT 켜기
SET AUTOCOMMIT OFF;
-- AUTOCOMMIT 상태 확인
SHOW AUTOCOMMIT;
Leave a comment