freezner

[PostgreSQL] 테이블 생성 시 Auto Increment 적용

MySQL에서는 테이블 생성 시 Auto Increment 옵션이 존재하지만 PostgreSQL에서는 Auto Increment라는 옵션은 어디에도 찾아볼 수 없습니다. MySQL과는 다르게 Sequence를 사용하기 때문인데 검색해보면 Sequence를 생성하고 테이블 CREATE 문에 nextval(‘시퀀스명’) PRIMARY 옵션을 넣는 등 상대적으로 귀찮은 방법을 사용하는 것으로 확인됩니다.

좀 더 검색해보니 간단한 방법이 있었고 아래와 같이 Auto Increment로 적용할 컬럼에 serial 타입으로 지정해주면 Sequence를 자동으로 세팅해줍니다.

serial은 데이터 타입이 아닌 옵션에 가깝다고 보면 됩니다. DDL에서 serial 타입으로 지정 후 테이블을 생성하면 int 타입에 nextval 옵션이 세팅됩니다.

serial의 데이터 타입은 3가지로 나뉩니다.

DATA TYPESIZEMAX VALUE
SMALLSERIAL2 Bytes32,767
SERIAL4 Bytes2,147,483,647
BIGSERIAL8 Bytes9,223,372,036,854,775,807

아래는 DDL 예시 입니다.

CREATE TABLE public.SAMPLE_TABLE (
	SEQ serial NOT NULL, -- AUTO INCREMENT
	COLUMN1 int4 NULL,
	COLUMN2 varchar NULL,
	...
	CREATE_AT date NULL
);
COMMENT ON TABLE public.SAMPLE_TABLE IS '예제 테이블';
Exit mobile version