Akashic Records

PLT 2.4 SEQUENCE 본문

오래된글/DataBase

PLT 2.4 SEQUENCE

Andrew's Akashic Records 2018. 4. 17. 15:34
728x90

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 특징

  • 자동적으로 유일 번호를 생성합니다.

  • 공유 가능한 객체

  • 주로 기본 키 값을 생성하기 위해 사용됩니다.

  • 어플리케이션 코드를 대체합니다.

  • 메모리에 CACHE되면 SEQUENCE 값을 액세스 하는 효율성을 향상시킵니다.

  • 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으로 SEQUENCE번호 사이의 간격을 지정.

                                      이 절이 생략되면 SEQUENCE는 1씩 증가.

START  WITH n  생성하기 위해 첫 번째 SEQUENCE를 지정.

                                      이 절이 생략되면 SEQUENCE는 1로 시작.

MAXVALUE              SEQUENCE를 생성할 수 있는 최대 값을 지정.

NOMAXVALUE                   오름차순용 10^27 최대값과 내림차순용-1의 최소값을 지정.

MINVALUE               최소 SEQUENCE값을 지정.

NOMINVALUE                    오름차순용 1과 내림차순용-(10^26)의 최소값을 지정.

CYCLE | NOCYCLE            최대 또는 최소값에 도달한 후에 계속 값을 생성할 지의 여부를

                                      지정. NOCYCLE이 디폴트.

CACHE | NOCACHE           얼마나 많은 값이 메모리에 오라클 서버가 미리 할당하고 유지

                                      하는가를 지정. 디폴트로 오라클 서버는 20을 CACHE.


SEQUENCE 사용법

테이블에 사용할 절차적인 번호를 생성하기 위해 SEQUENCE를 사용할 수 있다. NEXTVALUE와 CURRVALUE 의사열을 사용하여 SEQUENCE값을 참조한다.

NEXTVAL과 CURRVAL 의사열

  • NEXTVAL는 다음 사용 가능한 SEQUENCE 값을 반환 한다.

  • SEQUENCE가 참조될 때 마다, 다른 사용자에게 조차도 유일한 값을 반환한다.

  • CURRVAL은 현재 SEQUENCE값을 얻는다.

  • CURRVAL이 참조되기 전에 NEXTVAL이 사용되어야 한다.

NEXTVAL과 CURRVAL의 사용 규칙

NEXTVAL과 CURRVAL을 사용할 수 있는 경우

  • SUBQUERY가 아닌 SELECT문

  • INSERT문의 SELECT문

  • INSERT문의 VALUES절

  • UPDATE문의 SET절

NEXTVAL과 CURRVAL사용할 수 없는 경우

  • VIEW문의 SELECT문

  • DISTINCT 키워드를 사용한 SELECT문

  • GROUP BY, HAVING, ORDER BY를 이용한 SELECT문

  • SELECT, DELETE, UPDATE문장에서의 SUBQUERY

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


728x90

'오래된글 > DataBase' 카테고리의 다른 글

PLT 3.3 Role  (0) 2018.04.17
PLT 2.5 SYNONYM  (0) 2018.04.17
PLT 2.3 View  (0) 2018.04.17
PLT 2.2 Index  (0) 2018.04.17
PLT 1.3 롤백 세그먼트 (ROLLBACK SEGMENTS)  (0) 2018.04.17
Comments