MySQL에서는 테이블 생성 시 Auto Increment 옵션이 존재하지만 PostgreSQL에서는 Auto Increment라는 옵션은 어디에도 찾아볼 수 없습니다. MySQL과는 다르게 Sequence를 사용하기 때문인데 검색해보면 Sequence를 생성하고 테이블 CREATE 문에 nextval(‘시퀀스명’) PRIMARY 옵션을 넣는 등 상대적으로 귀찮은 방법을 사용하는 것으로 확인됩니다.
좀 더 검색해보니 간단한 방법이 있었고 아래와 같이 Auto Increment로 적용할 컬럼에 serial 타입으로 지정해주면 Sequence를 자동으로 세팅해줍니다.
serial은 데이터 타입이 아닌 옵션에 가깝다고 보면 됩니다. DDL에서 serial 타입으로 지정 후 테이블을 생성하면 int 타입에 nextval 옵션이 세팅됩니다.
serial의 데이터 타입은 3가지로 나뉩니다.
DATA TYPE | SIZE | MAX VALUE |
---|---|---|
SMALLSERIAL | 2 Bytes | 32,767 |
SERIAL | 4 Bytes | 2,147,483,647 |
BIGSERIAL | 8 Bytes | 9,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 '예제 테이블';