본문 바로가기
프로그래밍

시퀀스(sequence) 생성 및 확인, 초기화 방법

by choihyuunmin 2023. 2. 17.
728x90

숫자가 하나씩 자동으로 증가하는 ID를 생성하기 위해서는 PostgreSQL 에서 sequence라는 것을 사용한다.

 

  • 시퀀스 생성 방법
CREATE SEQUENCE 시퀀스이름 START 1;

 

  • 시퀀스 삭제 방법
DROP SEQUENCE 시퀀스이름;

 

  • 시퀀스 사용 방법
SELECT nextval('시퀀스이름');
SELECT currval('시퀀스이름');

-- 테이블 CREATE 시 DEFAULT로 지정
CREATE TABLE 테이블 (
id integer DEFAULT nextval('시퀀스이름'),
name varchar(10),
age integer
);

INSERT INTO (
name
, age
) VALUES (
'aaa'
,15
);

-- DEFAULT 없는 테이블
INSERT INTO (
id
, name
, age
) VALUES (
nextval('시퀀스이름')
, 'aaa'
, 15
);

- 기본 사용은 nextval('시퀀스이름')과 같이 사용한다.

- currval('시퀀스이름')은 사용한 시퀀스의 마지막 번호를 반환한다.

- nextval로 단순히 조회만해도 시퀀스가 올라간다.

- 위처럼 테이블 생성시에 디폴트로 시퀀스 값을 지정해주면 insert 시에 따로 기재하지 않아도 자동으로 들어간다.

- 디폴트로 시퀀스를 지정해주지 않은 테이블은 insert문에 nextval을 사용하여 insert 한다.

 

  • 시퀀스 초기화 방법
ALTER SEQUENCE 시퀀스이름 RESTART WITH 1;

- restart하고자 하는 시퀀스는 1이 아니어도 가능

- 시퀀스를 사용하여 데이터를 insert할 때는 시퀀스이름을 single quote(')로 감싸줘야 하지만, 시퀀스 초기화 시에는 시퀀스 이름만 넣어주면된다.