위로
아래
시퀀스
시퀀스 (SEQUENCE)
- 오라클은 autoIncreament가 없다. (알아서 숫자 올려주는 기능)
- 테이블의 recode에 유일한 정수를 부여해서 기본키값을 생성하는 객체
- 테이블에 독립적으로 적용되기 때문에 user의 접근이 가능하다
기본형
CREATE SEQUENCE 시퀀스이름
INCREAMENT BY 정수
START WITH 정수
CYCLE : 최대 또는 최소값에 도달 후 값을 다시 생성
시퀀스 생성
-- 연속적인 증가값 1, 시작값 1, 최대값 100, 메모리 상에서 시퀀스 관리 X,
-- 증가가 완료되면 에러를 유발시키는 dept_no 시퀀스 생성
CREATE SEQUENCE dept_no
INCREMENT BY 1
START WITH 1
MAXVALUE 100
NOCACHE
NOCYCLE;
시퀀스 사용
-- 증가시키기
SELECT dept_no.NEXTVAL FROM dual;
-- 현재 숫자 출력하기
SELECT dept_no.CURRVAL FROM dual;
-- 수정 (2씩 증가로 수정)
ALTER SEQUENCE dept_no
INCREMENT BY 2;
-- 시퀀스 확인
SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER
FROM USER_SEQUENCES;
-- 시퀀스 삭제
DROP SEQUENCE dept_no;
시퀀스 활용
일정한 숫자만큼씩 증가시킬 때 사용
CREATE TABLE dept1
AS
SELECT * FROM dept
WHERE 1=0;
CREATE SEQUENCE dept_no
INCREMENT BY 10
START WITH 10
MAXVALUE 100;
INSERT INTO dept1 (deptno, dname, loc)
VALUES (dept_no.NEXTVAL, 'DEVELOP','KOREA');
SELECT * FROM dept1;
INSERT INTO dept1 (deptno, dname, loc)
VALUES(dept_no.NEXTVAL, '전산부', '서울');
SELECT * FROM dept1;