ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 - 시퀀스(SEQUENCE)
    Database 2008. 9. 3. 14:19
    반응형
    ORACLE SEQUENCE

    - 유일(UNIQUE)한 값을 생성해주는 오라클 객체
    - 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
    - 시퀀스는 테이블과 독립적으로 저장되고 생성된다. 따라서 하나의 시퀀스를 여러 테이블에서 사용할 수 있다.

    시퀀스 생성 문법[Syntax]
    CREATE SEQUENCE sequence_name
    [START WITH n]                               -- n은 시퀀스 시작 값 지정
    [INCREMENT BY n]                          -- n은 시퀀스 증가 값 지정
    [MAXVALUE n | NOMAXVALUE]        -- 시퀀스 최대값, NOMAXVALUE는 무한대
    [MINVALUE n | NOMINVALUE]           -- 시퀀스 최소값, NOMINVALUE는 무한대
    [CYCLE | NOCYCLE]

    시퀀스 생성/사용 예제
    SQL>CREATE SEQUENCE emp_seq
            START WITH 1
            INCREMENT BY 1
            MAXVALUE 100000;

     sequence created.

    -- 시작값이 1이고 1씩 증가하고, 최대값이 100,000이 되는 시퀀스를 생성했습니다.

    SQL>INSERT INTO emp(empno, ename, hiredate) VALUE(emp_seq.NEXTVAL, 'David', sysdate);

    -- empno는 컬럼값을 입력할 때 다음 값을 기억하지 않아도 NEXTVAL을 사용하여 자동으로 입력이 된다.
    -- CURRVAL : 현재값 반환  NEXTVAL : 현재 시퀀스 값의 다음값 반환

    SQL>SELECT emp_seq.CURRVAL FROM DUAL;

          CURRVAL
         ----------------
                    1

    SQL>SELECT emp_seq.NEXTVAL FROM DUAL;
          NEXTVAL
         -----------------
                     2

    시퀀스 수정/삭제 문법[Syntax]
    ALTER SEQUENCE sequence_name  -- START WITH는 수정할 수 없다.
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]

    시퀀스 수정/삭제 예제
    SQL>ALTER SEQUENCE emp_seq
           INCREMENT BY 2
           CYCLE;

     sequence altered.

     -- 2씩 증가하고, 최대값을 넘으면 다시 처음으로 순환하도록 수정

    SQL>DROP SEQUENCE emp_seq

    sequence dropped.

    반응형
Designed by Tistory.