[Oracle SQL]SEQUENCE

고동이의 IT·2021년 10월 14일
0

Oracle SQL

목록 보기
24/31

> # SEQUENCE

  • 자동으로 증가(감소)되는 숫자를 생성시키는 객체
  • 일부 다른 DBMS에서는 숫자 컬럼의 속성 중 AUTO INCREMENT 속성으로 구현됨
  • 오라클에서는 테이블과 독립된 객체로 제공

(사용형식)
CREATE [OR REPLACE] SEQUENCE 시퀀스명
[START WITH n] --시작 값, 기본은 MIN_VALUE
[INCREMENT BY n] --증감값
[MAXVALUE n|NOMAXVALUE] --최대값, 기본은 NOMAXVALUE이고 10^27까지 사용
[MINVALUE n|NOMINVALUE] --최소값, 기본은 NOMINVALUE이고 -(10^27)까지 사용
[CYCLE|NOCYCLE] -- 최대(최소)값까지 도달 후 다시 SEQUNECE 생성여부 기본은 NOCYCLE
[CACHE n|NOCACHE] -- 캐쉬에 미리 만들어 놓고 사용할지 여부 기본은 CACHE 20
[ORDER|NOORDER] --시퀀스 객체 생성을 보증할지 여부 기본은 NOORDER

 **시퀀스 객체의 Pseudo Column(의사컬럼)
 --------------------------------------------------------------------------
 Pseudo Column            내용
 --------------------------------------------------------------------------
 시퀀스명.CURRVAL          시퀀스객체의 현재 값
 시퀀스명.NEXTVAL          시퀀스객체의 다음 값
 --------------------------------------------------------------------------
 *** 해당 세션에서 시퀀스 객체는 적어도 한 번이상의 NEXTVAL  이 수행된 후 CURRVAL 에 값이 배정됨
 

사용예) LPROD 테이블에 신규 분류코드를 추가 삽입하기 위한 시퀀스를 생성하고 다음 분류코드를 추가삽입하시오. 시퀀스는 LPROD_ID 데이터로 사용
[자료]

LPROD_GU: 'P501'
LPROD_NM: 농산물

LPROD_GU: 'P502'
LPROD_NM: '임산물'

(시퀀스생성)

 CREATE SEQUENCE SEQ_LPROD_ID
 START WITH 10;
 
 SELECT SEQ_LPROD_ID.NEXTVAL FROM DUAL;
 SELECT SEQ_LPROD_ID.CURRVAL FROM DUAL;
 
 INSERT INTO LPROD
  VALUES(SEQ_LPROD_ID.CURRVAL, 'P501', '농산물');
  
  SELECT * FROM LPROD;
  
  INSERT INTO LPROD
  VALUES(SEQ_LPROD_ID.NEXTVAL, 'P502', '임산물');
  
  SELECT * FROM LPROD;
 
profile
삐약..뺙뺙

0개의 댓글