쌓고 쌓다
[Oracle] 시퀀스(SEQUENCE) 본문
시퀀스
일련의 번호로 기본 키 값을 생성하는 객체.
여러 테이블에서 공유가능.
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n]
[MINVALUE n]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
- INCREMENT BY n : 시퀀스 번호의 증가치 (기본:1)
- START WITH n : 시퀀스 시작번호 (기본:1)
- MAXVALUE n : 시퀀스 최대값
- MINVALUE n : cycle로 지정한 경우, MAXVALUE에 도달한 후 새로 시작하는 시퀀스 값
- CYCLE or NOCYCLE : MAXVALUE 또는 MINVALUE에 도달한 후 순환 생성 여부
- CACHE n OR NOCACHE : 시퀀스 생성 속도 개선을 위해 캐쉬하는 시퀀스 개수
EX)
-- 시작 번호는 1, 증가치는 1, 최대 값은 2인 s_seq 시퀀스를 생성
CREATE SEQUENCE s_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 2;
-- 시퀀스 정보 확인
SELECT min_value, max_value, increment_by, last_number
FROM user_sequences
WHERE sequence_name='S_SEQ';
CURRVAL & NEXTVALUE
CURRVAL : 시퀀스에서 생성된 현재 번호 확인
NEXTVAL : 시퀀스에서 다음 번호 생성
=> INSERT, UPDATE문에서 사용
sequence_name.CURRVAL
sequence_name.NEXTVAL
EX)
-- s_seq의 현재 값과 다음 값을 확인
SELECT s_seq.CURRVAL FROM DUAL;
=> 시퀀스를 생성하고 NEXTVAL 값을 생성하지 않으면 CURRVAL 값 조회시 에러 발생
SELECT s_seq.NEXTVAL FROM DUAL;
select s_seq.CURRVAL FROM DUAL;
+ 아래의 쿼리를 계속 수행하여 MAXVALUE를 넘길 순 없다.
SELECT s_seq.NEXTVAL FROM DUAL;
시퀀스를 이용한 기본 키 생성
-- 학생 테이블에서 시퀀스 값을 이용하여 기본 키 값을 생성하여 입력
ALTER SEQUENCE s_seq MAXVALUE 200; -- 이전의 s_seq 시퀀스의 최대값 변경
INSERT INTO student(studno, name, deptno)
VALUES (s_seq.NEXTVAL, '홍길동', 101);
시퀀스 정의 변경
ALTER SEQUENCE sequence_name
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
EX)
-- s_seq 시퀀스의 최대 값을 200으로 변경
ALTER SEQUENCE s_seq MAXVALUE 200;
시퀀스 삭제
DROP SEQUENCE sequence_name;
EX)
-- s_seq 시퀀스 삭제
DROP SEQUENCE s_seq;
'프로그래밍 > SQL' 카테고리의 다른 글
[Oracle] TRUNCATE (0) | 2022.11.27 |
---|---|
[Oracle] 테이블 생성 및 조작(CREATE, ALTER, DROP TABLE) (0) | 2022.11.27 |
[Oracle] UPDATE, DELETE, MERGE (0) | 2022.11.24 |
[Oracle] INSERT (0) | 2022.11.21 |
오라클 중심의 SQL 배움터 9장 연습문제 풀이 (0) | 2022.11.16 |
Comments