Web develop/SQL

[SQL/ORACLE] SEQUENCE 사용법 (+ORACLE 11g에서 사용시 설정하는법)

ForA 2019. 6. 15. 20:48
728x90

SEQUENCE

: 자동번호 부여

  • 숫자값이 일정한 규칙에 의해서 연속적으로 자동증가.

    CREATE SEQUENCE sequence\_name
                                  [INCREMENT BY] 증가치
                                  [START WITH] 초기값
                                  [MAXVALUE n|NOMAXVALUE]
                                  [MINVALUE|NOMINVALUE]
                                  [CYCLE|NOCYCLE]
                                  [CACHE|NOCACHE];
  • 테이블에 종속적이지 않다(테이블과 독립적)

  • maxvalue : 시퀀스가 가질 수 있는 최대값 지정.
    nomaxvalue일 경우 ascending순서일 경우 10의 27승
    descending일 경우 -1

  • minvalue : 시퀀스가 가질 수 있는 최소값 지정.
    nominvalue일 경우 ascending 1
    descending 10의 26승으로 설정.

  • cache : 메모리상의 시퀀스 값을 관리하도록 하는 것인데 기본값은 20.
    nocache는 메모리 상에서 시퀀스를 관리하지 않음.

시퀀스명.nextval ==> 발생된 번호값(그다음)  
시퀀스명.currval ==> 현재 번호값
CREATE SEQUENCE test\_seq; --기본 1부터 시작해서 1씩 증가되는 숫자값  
DROP SEQUENCE test\_seq;

CREATE SEQUENCE test\_seq START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE;

-- 자동번호(숫자) 얻어오기  
SELECT test\_seq.nextval FROM dual;

-- 현재숫자 보기(조회)  
SELECT test\_seq.currval FROM dual;

테이블에 적용

CREATE TABLE dept3 AS SELECT * FROM dept WHERE 1=0;

INSERT INTO dept3 (dname,loc) VALUES ('기획부', '강남');

SELECT MAX(deptno) FROM dept3; --30번 부서
SELECT deptno FROM dept3; 

-- 시퀀스 객체 사용
CREATE SEQUENCE dept3_seq START WITH 10 
                                                    INCREMENT BY 10
                                                    NOCYCLE
                                                    NOCACHE;

-- 시퀀스 적용된 부서번호 생성
INSERT INTO dept3 VALUES (dept3_seq.nextval, '영업부', '서초');
INSERT INTO dept3 VALUES (dept3_seq.nextval, '기획부', '강남');
INSERT INTO dept3 VALUES (dept3_seq.nextval, '개발부', '오노');

Oracle 11g에서 시퀀스 사용시 세팅할 사항

deferred_segment_creation=true(기본값) ===> false로 변경

alter system set deferred_segment_creation=false;    
ORA-01031: insufficient privileges ==> 권한불충분

SQL> conn system/oracle      
Connected.

SQL> alter system set deferred_segment_creation=false;
System altered.

SQL> conn scott/tiger
Connected.