Skip to the content.

Serial

기본 구조

CREATE TABLE table_name (
    seq SERIAL NOT NULL PRIMARY KEY,
    column_name1 data_type,
    column_name2 data_type,
    column_name3 data_type,
    ...
);


특징

  1. Serial 타입을 포함한 테이블을 생성하면 Sequence도 생성됨
  2. 결국 Serial도 Sequence로 동작하기 때문에 nextval() 같은 함수로 호출이 가능

    각 시퀀스와 관련된 함수에 대한 설명은 Sequence 를 확인


SQL

--인서트 시에 Serial 생략 가능 
INSERT INTO table_name(column_name1, column_name2, ...) VALUES ('data1', 'data2', ...);

--DEFAULT로도 가능
INSERT INTO table_name(seq, column_name1, column_name2, ...) VALUES (DEFAULT, 'data1', 'data2', ...);

--RETURNING column_name을 통해서 응답 값을 받을 수 있음
INSERT INTO table_name(column_name1, column_name2, ...) VALUES ('data1', 'data2', ...) RETURNING seq;

💡 아래의 SQL문을 통해 마지막 SERIAL 타입의 다음 값을 확인합니다.
select nextval(pg_get_serial_sequence('public.tb_user', 'user_sq'));


종류

|데이터 타입|Bytes|범위|설명| |-|-|-|-| |SMALLSERIAL (SERIAL2)|2 Bytes|1 ~ 32767|16비트| |SERIAL (SERIAL4)|4 Bytes|1 ~ 2147483647|32비트| |BIGSERIAL (SERIAL8)|8 Bytes|1 ~ 9223372036854775807|64비트|


Serial 타입, DEFAULT 속성 차이

|항목|Serial|DEFAULT| |-|-|-| |동작|자동적으로 증가하는 정수를 생성|특정 컬럼에 대한 기본 값 설정| |증가 설정|자동적으로 증가|자동적으로 증가하는 기능 없음| |가능한 데이터 타입|정수|어떤 데이터 타입이라도 가능|


참고