Serial
기본 구조
CREATE TABLE table_name (
seq SERIAL NOT NULL PRIMARY KEY,
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
...
);
특징
- Serial 타입을 포함한 테이블을 생성하면 Sequence도 생성됨
-
결국 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| |-|-|-| |동작|자동적으로 증가하는 정수를 생성|특정 컬럼에 대한 기본 값 설정| |증가 설정|자동적으로 증가|자동적으로 증가하는 기능 없음| |가능한 데이터 타입|정수|어떤 데이터 타입이라도 가능|