SEQUENCE 객체
CREATE SEQUENCE 시퀀스명
[START WITH 값]
[INCREMENT BY 값]
[MAXVALUE 값 | NOMAXVALUE]
[MINVALUE 값 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
[ORDER | NOORDER]
default | 설명 | |
START WITH 값 | MINVALUE | 시작 값 |
INCREMENT BY 값 | 1 | 증감 값 |
MAXVALUE 값 | NOMAXVALUE | NOMAXVALUE = 10^27 | 최댓값 |
MINVALUE 값 | NOMINVALUE | NOMINVALUE = 1 | 최솟값 |
CYCLE | NOCYCLE | NOCYCLE | 최대[최소]까지 도달 후 다시 시퀀스 생성 여부 결정 |
CACHE n | NOCACHE | CACHE 20 | 시퀀스를 캐쉬에 생성해 놓고 사용할지 여부 |
ORDER | NOORDER | NOORDER | 요청순서대로 생성 보장여부 |
- 자동으로 증가 또는 감소되는 번호를 생성하기 위한 객체
- 테이블에 독립적
- 주로 적당한 PK를 선정할 수 없는 경우(ex. 게시판의 게시글번호 등) 사용
- 지나간 시퀀스 값은 재사용할 수 없다.
- 중복이 안되어 기본키로 쓸 수 있다
시퀀스는 의사컬럼(Pseudo Column : 시스템에서 제공)을 사용하여 참조 됨
의사 컬럼 | 내용 |
시퀀스명.NEXTVAL | 시퀀스의 다음 값 |
시퀀스명.CURRVAL | 시퀀스가 가지고 있는 현재 값 |
** 시퀀스가 생성된 후 반드시 NEXTVAL부터 호출되어야 한다 (주소를 참조, 호출 안하면 값을 배정하지 못함(주소값x))
NEXTVAL이 호출될 때 마다 증감값 만큼 증감됨 (주의)
분류테이블에 다음 자료를 입력하시오
CREATE SEQUENCE seq_lprod_id
START WITH 10;
INSERT INTO LPROD(LPROD_ID, LPROD_GU, LPROD_NM)
VALUES(seq_lprod_id.NEXTVAL, 'P501', '농산물');
INSERT INTO LPROD(LPROD_ID, LPROD_GU, LPROD_NM)
VALUES(seq_lprod_id.NEXTVAL, 'P502', '임산물');
INSERT INTO LPROD(LPROD_ID, LPROD_GU, LPROD_NM)
VALUES(seq_lprod_id.NEXTVAL, 'P503', '수산물');
SELECT * FROM LPROD;
SELECT seq_lprod_id.CURRVAL FROM DUAL; --12
'DB Oracle' 카테고리의 다른 글
[Oracle] INDEX 객체 (0) | 2024.03.29 |
---|---|
[Oracle] SYNOYM(동의어) 객체 (0) | 2024.03.29 |
[Oracle] VIEW (0) | 2024.03.28 |
[Oracle] 집합연산자 (0) | 2024.03.27 |
3/26 Homework (0) | 2024.03.26 |