PostgreSQL - 시퀀스 생성

2022. 4. 22. 23:06[개발] 지식/PostgreSQL

문법

CREATE SEQUENCE [ IF NOT EXISTS ] sequence_name
    [ AS { SMALLINT | INTEGER | BIGINT } ]
    [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] 
    [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] 
    [ CACHE cache ] 
    [ [ NO ] CYCLE ]
    [ OWNED BY { table_name.column_name | NONE } ]

예시

CREATE SEQUENCE s1.seq_emp AS integer
INCREMENT 1
MINVALUE 1
MAXVALUE 999999
START 1
CACHE 1
OWENED BY s2.tb_emp.emp_seq;
  • INCREMENT : 시퀀스 증가값 (1이면 1씩 증가)
  • MINVALUE : 시퀀스 최소값
  • MAXVALUE : 시퀀스 최대값
  • START : 시작값
  • CACHE : 속도를 위해 메모리에서만 처리하는 캐시값. 기본값은 1이며, 이는 캐시를 사용하지 않고 매번 디스크를 사용함을 의미한다. (1부터 순차적으로 시퀀스를 올리고 싶다면 이렇게 하는게 좋다. 다중 세션의 경우 다른 세션에서 캐시로 증가된 시퀀스 값은 건너 뛰기 때문이다.)
  • OWNED BY : 특정 테이블의 컬럼과 의존관계를 맺는다.

시퀀스 초기화

가끔 시퀀스를 초기 값으로 되돌릴 필요가 생기는데, 아래처럼 수행하면 1 부터 다시 카운트 된다.

alter sequence s1.seq_emp restart with 1;

테이블 컬럼 default 값을 시퀀스로 세팅

테이블 컬럼의 default 값을 시퀀스로 세팅하려면 아래와 같이 작성 후 실행한다.

alter table s2.tb_emp alter column emp_seq set default nextval('s1.seq_emp');
<