콘텐츠로 이동

Sequence

정의

--생성
CREATE SEQUENCE seq_name START WITH 1;

--초기화
SELECT setval('seq_name', 1);

--현재 값
SELECT currval('seq_name');

--다음 값
SELECT nextval('seq_name');

--설정한 값부터 재시작
ALTER SEQUENCE seq_name RESTART WITH 1;

--시퀸스 정보 확인 (직접 건들면 안 됨)
SELECT * FROM seq_name;

-- 시퀀스 삭제
DROP SEQUENCE seq_name;


특징

  1. 데이터베이스 전체에서 공유가 가능 (여러 테이블에서 동일한 시퀀스에 접근이 가능하다는 말) ➞ 테이블의 특정 컬럼에 일련번호를 생성하거나, 여러 테이블에 걸쳐 일련번호를 생성하는 등 다양한 용도로 사용
  2. Serial과 다르게 시퀀스에 규칙 지정이 가능


옵션

옵션 설명
TEMPORARY 현재 세션에서만 사용 (세션 종료시 삭제)
AS type_name SMALLINT, INTEGER, BIGINT를 선택할 수 있으며 기본 값은 BIGINT
INCREMENT BY 양수면 증가, 음수면 감소
MINVALUE 최소값 설정
MAXVALUE 최대값 설정
CACHE 메모리에 설정한 크기 만큼을 올려둠
CYCLE / NO CYCLE 순환 여부 설정
OWNED BY / OWNED BY NONE 해당 컬럼과 시퀀스의 의존관계 생성 여부 (테이블과 시퀀스의 소유자가 같아야 함). 테이블, 컬럼이 삭제되면 시퀀스는 자동 삭제됨. 기본 값은 OWNED BY NONE


시퀸스의 다른 속성 변경

ALTER SEQUENCE seq_name OWNER TO new_owner;
ALTER SEQUENCE seq_name RENAME TO new_seq_name;
ALTER SEQUENCE seq_name SET SCHEMA new_schema;


참고