Sequence
생성
CREATE SEQUENCE owner_name.seq_name;
옵션 기본 값 및 설명
|Name|Value|Description|
|-|-|-|
|MIN_VALUE|1|최소 값|
|MAX_VALUE|9999999999999999999999999999|최대 값|
|INCREMENT_BY|1|증가하는 숫자|
|CYCLE_FLAG|N|순환 여부|
|ORDER_FLAG|N|순서대로 생성 여부
Y : 시퀀스 값을 건너뛸 수 없음 (RAC 구성)
N : 시퀀스 값을 건너뛸 수 있음|
|CACHE_SIZE|20|메모리에 할당해 놓을 양|
|LAST_NUMBER|1|현재 값|
|SCALE_FLAG|N|확장 가능 여부
Y : 6자리 숫자가 앞에 추가 ([(instance id % 100) + 100]
¦¦ [session id % 1000]
)|
|EXTEND_FLAG|N|확장 접두사 추가에 따른 변수와 테이블 열의 크기 조정 여부|
|SHARDED_FLAG|N|
|SESSION_FLAG|N|세션 시퀀스 여부 (세션이 사라지면 액세스한 세션 시퀀스의 상태도 없어지는 특징을 가짐)|
|KEEP_VALUE|N|애플리케이션 연속성 (Application Continuity) 에 대해 원래 값 유지 여부 (사용자가 해당 Owner일 경우에만 발생)|
|DUPLICATED|N|
|SHARDED|N|
수정
ALTER SEQUENCE owner_name.seq_name option_name value;
--INCREMENT BY
ALTER SEQUENCE owner_name.seq_name INCREMENT BY 1000;
--MAXVALUE
ALTER SEQUENCE owner_name.seq_name MAXVALUE 9999999;
--CACHE
ALTER SEQUENCE owner_name.seq_name CACHE 1000;
ALTER SEQUENCE owner_name.seq_name NOCACHE;
--CYCLE
ALTER SEQUENCE owner_name.seq_name CYCLE;
ALTER SEQUENCE owner_name.seq_name NOCYCLE;
시퀀스 현재 값 확인
--User
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'seq_name';
--DBA
SELECT LAST_NUMBER FROM DBA_SEQUENCES WHERE SEQUENCE_NAME = 'seq_name';
삭제
DROP SEQUENCE owner_name.seq_name;
MySQL의 AUTO_INCREMENT처럼 사용
CREATE TABLE owner_name.table_name (
seq NUMBER(22) DEFAULT owner_name.sequence_name.nextval,
column_name1 VARCHAR2(100),
column_name2 VARCHAR2(100),
...
column_name8 VARCHAR2(100),
column_name9 VARCHAR2(100),
CONSTRAINT "pk_name" PRIMARY KEY (seq)
) TABLESPACE tablespace_name;
--MySQL의 AUTO_INCREMENT처럼 시퀀스 증가 컬럼을 제외한 나머지 컬럼에 데이터를 넣으면 됨
INSERT INTO owner_name.table_name (column_name1, column_name2, ... column_name8, column_name9) VALUES (value1, value2, ... value8, value9);
12c부터 가능, 비슷한 기능인 IDENTITY도 있음