순차적 번호 자동 발생기 역할의 객체 --> 주로 PK 컬럼에 삽입되는 값을 만드는 용도!
CREATE SEQUENCE 시퀀스 이름
[START WITH 숫자] -- 처음 발생시킬 시작값 지정, 생략하면 자동 1부터 시작(기본값)
[INCREMENT BY 숫자] -- 다음 값에 대한 증가치, 생략하면 자동 1씩 증가(기본값)
[MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값 지정(10의 27승 - 1)
[MINVALUE 숫자 | NOMINVALUE] -- 최소값 지정(-10의 26승)
[CYCLE | NOCYCLE(기본값)] -- 값 순환(반복) 여부 지정
[CACHE 바이트크기 | NOCACHE(기본값)] -- 캐시메모리 기본값은 20바이트 최소값은 2바이트
--> 시퀀스의 캐시 메모리는 할당된 크기만큼 미리 다음 값들을 생성해 저장해둠!
시퀀스 호출 시 미리 저장되어진 값들을 가져와 반환하므로 매번 시퀀스를 생성해서 반환하는 것보다 DB속도가 향상됨.
CREATE TABLE EMP_TEMP
AS SELECT EMP_ID, EMP_NAME FROM EMPLOYEE;
SELECT * FROM EMP_TEMP;
-- 223번부터 10씩 증가하는 시퀀스 생성
CREATE SEQUENCE SEQ_TEMP
START WITH 223
INCREMENT BY 10;
-- EMP_TEMP 테이블에 사원 정보 삽입
INSERT INTO EMP_TEMP VALUES(SEQ_TEMP.NEXTVAL, '홍길동'); -- 223 홍길동
INSERT INTO EMP_TEMP VALUES(SEQ_TEMP.NEXTVAL, '고길동'); -- 233 고길동
INSERT INTO EMP_TEMP VALUES(SEQ_TEMP.NEXTVAL, '김길동'); -- 243 김길동
-- EMP_ID PK 제약조건 설정
ALTER TABLE EMP_TEMP
MODIFY EMP_ID PRIMARY KEY;
INSERT INTO EMP_TEMP VALUES(SEQ_TEMP.CURRVAL, '고길동'); -- PK 위배
ALTER SEQUENCE 시퀀스 이름
[INCREMENT BY 숫자][MAXVALUE 숫자 | NOMAXVALUE]
[MINVALUE 숫자 | NOMINVALUE][CYCLE | NOCYCLE]
[CACHE 바이트크기 | NOCACHE]
ALTER SEQUENCE SEQ_TEMP
INCREMENT BY 1;
DROP TABLE EMP_TEMP;
DROP VIEW V_DCOPY2;
DROP SEQUENCE SEQ_TEMP;