본문 바로가기

DataBase/Oracle

PLT 2.4 SEQUENCE

PLT 2.4 SEQUENCE
SEQUENCE는 테이블의 행에 대한 SEQUENCE 번호를 자동적으로 생성하기 위해 사용될 수 있다. SEQUENCE는 사용자가 생성한 데이터베이스 객체이다. SEQUENCE에 대한 전형적인 사용은 각행에 대해 유일해야 하는 PRIMARY KEY 값을 생성하기 위해서 입니다. SEQUENCE Oracle에 의해 발생되고 증가(또는 감소) 됩니다.
SEQUENCE 값에 대해 보다 빠른 액세스를 허용하기 위해 메모리에 SEQUENCE CACHE합니다. CACHE SEQUENCE를 처음 참조할 때 형성됩니다. 다음 SEQUENCE 값에 대한 요구는 CACHE SEQUENCE에서 읽어 들입니다. 마지막 SEQUENCE가 사용된 후에 SEQUENCE에 요구하면 CACHE SEQUENCE를 메모리에 갖다 놓습니다.
 
SEQUENCE 특징
n         자동적으로 유일 번호를 생성합니다.
n         공유 가능한 객체
n         주로 기본 키 값을 생성하기 위해 사용됩니다.
n         어플리케이션 코드를 대체합니다.
n         메모리에 CACHE되면 SEQUENCE 값을 액세스 하는 효율성을 향상시킵니다.
n         PRIMARY KEY으로 사용될 경우 CYCLE OPTION을 사용해서는 안됩니다.
 
CREATE  SEQUENCE  sequence_name
                  [INCREMENT  BY  n]
                  [START  WITH  n]
                  [{MAXVALUE n | NOMAXVALUE}]
                  [{MINVALUE n | NOMINVALUE}]
                  [{CYCLE | NOCYCLE}]
                  [{CACHE | NOCACHE}];
sequence_name                 SEQUENCE의 이름입니다.
INCREMENT  BY  n           정수 값인 n으로 SEQUENCE번호 사이의 간격을 지정.
                                       이 절이 생략되면 SEQUENCE 1씩 증가.
START  WITH  n  생성하기 위해 첫 번째 SEQUENCE를 지정.
                                       이 절이 생략되면 SEQUENCE 1로 시작.
MAXVALUE n                     SEQUENCE를 생성할 수 있는 최대 값을 지정.
NOMAXVALUE                   오름차순용 10^27 최대값과 내림차순용-1의 최소값을 지정.
MINVALUE n                      최소 SEQUENCE값을 지정.
NOMINVALUE                    오름차순용 1과 내림차순용-(10^26)의 최소값을 지정.
CYCLE | NOCYCLE            최대 또는 최소값에 도달한 후에 계속 값을 생성할 지의 여부를
                                       지정. NOCYCLE이 디폴트.
CACHE | NOCACHE           얼마나 많은 값이 메모리에 오라클 서버가 미리 할당하고 유지
                                       하는가를 지정. 디폴트로 오라클 서버는 20 CACHE.
SEQUENCE 사용법
테이블에 사용할 절차적인 번호를 생성하기 위해 SEQUENCE를 사용할 수 있다. NEXTVALUE CURRVALUE 의사열을 사용하여 SEQUENCE값을 참조한다.
 
NEXTVAL CURRVAL 의사열
n         NEXTVAL는 다음 사용 가능한 SEQUENCE 값을 반환 한다.
n         SEQUENCE가 참조될 때 마다, 다른 사용자에게 조차도 유일한 값을 반환한다.
n         CURRVAL은 현재 SEQUENCE값을 얻는다.
n         CURRVAL이 참조되기 전에 NEXTVAL이 사용되어야 한다.
 
 
NEXTVAL CURRVAL의 사용 규칙
NEXTVAL CURRVAL을 사용할 수 있는 경우
n        SUBQUERY가 아닌 SELECT
n        INSERT문의 SELECT
n        INSERT문의 VALUES
n        UPDATE문의 SET
 
NEXTVAL CURRVAL사용할 수 없는 경우
n        VIEW문의 SELECT
n        DISTINCT 키워드를 사용한 SELECT
n        GROUP BY, HAVING, ORDER BY를 이용한 SELECT
n        SELECT, DELETE, UPDATE문장에서의 SUBQUERY
n        CREATE TABLE, ALTER TABLE명령문의 DEFAULT
 
SEQUENCE 수정
INCREMENT  BY, MAXVALUE, MINVALUE, CYCLE, CACHE을 변경할 수 있습니다.
SEQUENCE에 대한 ALTER 권한을 가지거나 소유자여야 합니다. 이후의 SEQUENCE번호만 영향을 받습니다. SEQUENCE는 다른 번호에서 SEQUENCE를 다시 시작하기 위해서는 제거하고 다시 생성하여야 합니다.
 
ALTER  SEQUENCE  sequence_name
                  [INCREMENT  BY  n]
                  [{MAXVALUE n | NOMAXVALUE}]
                  [{MINVALUE n | NOMINVALUE}]
                  [{CYCLE | NOCYCLE}]
                  [{CACHE | NOCACHE}];
 
SEQUENCE 제거
데이터 사전에서 SEQUENCE를 제거하기 위해 DROP SEQUENCE문장을 사용합니다.
SEQUENCE를 제거하기 위해서는 소유자이거나 DROP ANY SEQUENCE권한을 가져야 합니다.
 
DROP  SEQUENCE  sequence_name;

[출처] PLT 2.4 SEQUENCE|작성자 후루꾸

'DataBase > Oracle' 카테고리의 다른 글

Chapter 3 Oracle 사용자 관리 - PLT 3.1 사용자 생성  (0) 2008.04.17
PLT 2.5 SYNONYM  (0) 2008.04.17
PLT 2.3 View  (0) 2008.04.17
PLT 2.2 Index  (0) 2008.04.17
Chapter 2 Oracle 객체 - PLT 2.1 Table  (0) 2008.04.17