위로 아래

시퀀스

시퀀스 (SEQUENCE)

  1. 오라클은 autoIncreament가 없다. (알아서 숫자 올려주는 기능)
  2. 테이블의 recode에 유일한 정수를 부여해서 기본키값을 생성하는 객체
  3. 테이블에 독립적으로 적용되기 때문에 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;