[오라클 PL/SQL] 오라클 임시 테이블 – 트랜잭션 GTT란?


안녕하세요.

 

오늘은 오라클에서 제공하는 임시테이블에 대해서 알아 보려고 합니다.

 

오라클에서 제공하는 임시테이블은 크게 두 가지 유형이 있습니다. 첫 번째로는 트랜잭션 GTT(Global Temporary Table) 과 세션 GTT로 두 가지 유형이 있습니다.

 

그 중에서 오늘은 트랜잭션 GTT(Global Temporary Table)에 대해서 알려드리려고 합니다.

 

먼저 트랜잭션 GTT 구문은 아래와 같습니다.


트랜잭션 GTT 구문


CREATE GLOBAL TEMPORARY TABLE 테이블 명 (

컬럼1 테이터타입,

…)

[ON COMMIT DELETE ROWS];

 

트랜잭션 GTT 구문은 위와 같습니다.

 

임시테이블과 일반 테이블 생성 구문과의 차이점은 CREATE 다음에 GLOBAL TEMPORARY와 맨 마지막에 ON COMMIT DELETE ROWS란 구문이 추가된다는 점입니다.

 

ON COMMIT DELETE ROWSCOMMIT 시에 로우를 삭제하라는 의미로, DMLGTT 테이블에 데이터를 생성, 수정할 당시에는 데이터가 남아 있지만 COMMIT을 실행하면 모든 데이터가 없어 진다는 얘기 입니다.

 

트랜잭션이 살아있는 동안에만 데이터가 유지되므로, 트랜잭션 GTT 라고 부르는 것이며, 생략이 가능하므로 이 구문을 빼고 GTT를 생성하게 되면 디폴트로 트랜잭션 GTT가 만들어 집니다.

 

그럼 이제 실제로 트랜잭션 GTT를 생성해 보도록 하겠습니다.

 

트랜잭션 GTT 생성


1

2

3

4

5

6

CREATE GLOBAL TEMPORARY TABLE stu_gtt(

    name varchar2(100),

    age number,

    grade number

)

ON COMMIT DELETE ROWS;

cs

 

위와 같이 stu_gtt 트랜잭션 GTT 테이블을 생성하였습니다.

 

그럼 이제 stu_gtt 테이블에 데이터를 넣고, 트랜잭션 내에서 데이터가 유지되는지 확인해 보도록 할게요.

 

데이터 확인


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

DECLARE

    vn_cnt int := 0;

    vn_cnt2 int := 0;

BEGIN

 

    --stu_gtt 테이블에 데이터 넣기

    INSERT INTO stu_gtt(name, age, grade)

    VALUES('범범조조'273);

    

    INSERT INTO stu_gtt(name, age, grade)

    VALUES('강호동'372);

    

    INSERT INTO stu_gtt(name, age, grade)

    VALUES('유재석'492);

    

    --COMMIT  데이터 개수 출력

    SELECT COUNT(*)

    INTO vn_cnt

    FROM stu_gtt;

    

    COMMIT;

    

    --COMMIT  데이터 개수 출력

    SELECT COUNT(*)

    INTO vn_cnt2

    FROM stu_gtt;

    

    DBMS_OUTPUT.PUT_LINE('COMMIT  데이터 개수 : ' || vn_cnt);

    DBMS_OUTPUT.PUT_LINE('COMMIT  데이터 개수 : ' || vn_cnt2);

END;

Colored by Color Scripter

cs

 

실행 결과



위와 같이 트랜잭션 GTT로 생성한 stu_gtt 테이블의 데이터를 COMMIT 전과 후로 보았을 때에 트랜잭션이 유지될 때에는 INSERT 한 데이터 3개가 COUNT로 출력되는 것을 볼 수 있고, COMMIT 후에는 임시테이블이 사라지면서 COUNT 개수가 0개로 출력된 것을 확인하실 수 있습니다.

 

감사합니다.^^



728x90

이 글을 공유하기

댓글

Designed by JB FACTORY