자동증가 컬럼 생성
1. 테이블 생성시 Serial로 생성
MySQL의 AUTO_INCREMENT 와 같이 자동증가 값을 사용하기 위해선 컬럼을 serial 또는 bigserial 로 생성하면 된다
CREATE TABLE DEMO1 (SEQ SERIAL, NAME VARCHAR(20)); CREATE TABLE DEMO2 (SEQ BIGSERIAL, NAME VARCHAR(20));
이렇게 생성된 컬럼은 serial의 경우 4byte integer, bigserial은 8byte integer가 된다.
다만 Unique constraint를 가지길 원하거나 Primary Key가 되길 원한다면 따로 지정해 주어야 한다.
2. Sequence 생성 후 컬럼에 Default로 적용
Sequence를 생성하고 원하는 컬럼에 Default를 적용한다
CREATE SEQUENCE <sequence name>; CREATE TABLE <table name> ( <column name> integer NOT NULL DEFAULT nextval('<sequence name>') ); ALTER SEQUENCE <sequence name> OWNED BY <table name>.<column name>;
이미 존재하는 테이블의 컬럼에는 다음과 같이 ALTER TABLE을 통해 적용한다.
CREATE SEQUENCE <sequence name>; ALTER TABLE <table name> ALTER COLUMN <column name> SET DEFAULT nextval('<sequence name>'); ALTER SEQUENCE <sequence name> OWNED BY <table name>.<column name>;
최근에 추가된 SERIAL 값 조회하기
특정 Sequence의 값을 조회하려면
SELECT currval('<sequence name>');
최근 Sequence의 값을 조회하려면 간단하게
SELECT lastval();
INSERT 쿼리에서 RETURNING을 사용해도 된다.
INSERT INTO <table name> (NAME) VALUES('value') RETURNING <serial column>;