Intro
안녕하세요
초보 DBA 다뉴입니다.
오늘은 오라클의 Object중 하나인 시퀀스에 대해 알아 보도록 하겠습니다.
Sequence
시퀀스(Sequence)란?
- 순차적으로 자동증가 하는 값을 반환하는 객체
- 일반적으로 PK값 중복 방지를 위해 사용
- 생성, 사용 방법, 수정, 삭제
시퀀스(Sequence) 생성
CREATE SEQUENCE [SequenceName] -- 생성 시퀀스 명, 해당 Create문을 제외한 나머지 부분은 다 생략 가능
INCREMENT BY [n] -- 증감 값, n만큼 시퀀스 값이 증가(양수) 또는 감소(음수), default = 1 (생략시)
START WITH [n] -- 시작숫자 default = 증가 일때 MINVALUE / 감소 일때 MAXVALUE
MINVALUE(NOMAXVALUE) [n] -- 최소 값 설정, default = 1 (생략시)
-- NOMAXVALUE : 최소 값은 INCREMENT BY 가 양수 일때 = 1 / 음수 일때 = -10^26
MAXVALUE(NOMAXVALUE) [n] -- 최대 값 설정, default = 10^27 (생략시)
-- NOMAXVALUE : 최대 값은 INCREMENT BY 가 양수 일때 = 10^27 / 음수 일때 = -1
CYCLE OR NOCYCLE -- CYCLE : 최대값에 도달 -> 최소값부터 다시 시작
-- NOCYCLE : 최대값에 도달 -> 시퀀스 생성중지 (default)
CACHE OR NOCACHE -- CACHE : 메모리에 시퀀스 값을 미리 할당 (default = CACHE 20)
-- NOCACHE : 시퀀스 값을 메로리에 할당하지 않음
시퀀스(Sequence) 사용 방법
-- 시퀀스 사용
-- 다음 시퀀스 값을 insert문에 넣어 key로 활용
insert into [Table] values([SequenceName].NEXTVAL, col1, ...)
-- 시퀀스 조회
-- 해당 시퀀스를 조회
select [SequenceName].CURRVAL from DAUL
[SequenceName].NEXTVAL : 해당 시퀀스의 다음 값을 가져옵니다.
[SequenceName].CURRVAL : 해당 시퀀스의 값을 조회합니다.
반응형
시퀀스(Sequence) 수정
ALTER SEQUENCE [SequenceName]
INCREMENT BY [n]
START WITH [n]
MINVALUE(NOMAXVALUE) [n]
MAXVALUE(NOMAXVALUE) [n]
CYCLE OR NOCYCLE
CACHE OR NOCACHE
시퀀스(Sequence) 삭제
DROP SEQUENCE [SequenceName]
Outro
Oracle의 여러 Object들 중 하나인 시퀀스에 대해서 알아봤는데요.
많이 사용되는 오브젝트인 만큼 잘 알아두고 사용하면 좋을 것 같습니다.
초기에 설정할때 컬럼 타입의 최대값하고 맞춰서 설정하고,
컬럼 코멘트에 해당 시퀀스를 사용한다라는 코멘트를 달아두어 사용할때 편하게 사용하는 등
추가적인 센스가 필요하네요!!
여기까지 오라클 시퀀스에 대한 내용이였습니다.
감사합니다.
반응형
'DATABASE > Oracle' 카테고리의 다른 글
[Oracle] DML Trigger - 테이블에서 사용하는 트리거 정리 (0) | 2024.11.11 |
---|---|
[Oracle] 테이블 정의서 만들기 - 쿼리로 추출하기 (0) | 2024.04.02 |
[Oracle] External Table - 외부 CSV 파일을 테이블로 만들기 (0) | 2024.03.30 |
[Oracle] Table / Column Comment - 코멘트, 설명 달기 (0) | 2024.01.26 |
[DBA][Oracle] 자주 쓰는 쿼리 - TableSpace 용량 및 파일 위치 확인 (1) | 2023.08.08 |
[Oracle] 파티션(Partition) 2 - Range Partition, Interval Partition (2) | 2023.08.04 |
[Oracle] 저장 구조 - Tablespace, Segments, Extents, Data Block, OS Block, Data File (1) | 2023.07.29 |
[Oracle][Error] ORA-01502: 인덱스 'PK_Name' 또는 인덱스 분할영역은 사용할 수 없는 상태입니다. (1) | 2023.07.28 |