[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;

Tags:

Categories:

Updated:

Leave a comment