본문 바로가기
DataBase/PostgreSQL

[PostgreSQL] Auto increment 하는 방법

by dbjh 2019. 12. 21.
반응형

1. 테이블을 새로 생성하여 적용하는 경우 (기존방식) 

-- 1. 시퀀스생성
CREATE SEQUENCE 시퀀스이름;

-- ex 
CREATE SEQUENCE board_sequence;
CREATE SEQUENCE board_sequence START 1;


-- 2. 테이블 생성하면서 시퀀스 적용하기
CREATE TABLE 테이블이름 (
    컬럼이름 integer NOT NULL DEFAULT nextval('시퀀스이름')
);

-- ex 
CREATE TABLE board (
    board_no integer NOT NULL DEFAULT nextval('board_sequence')
);

 

2. 기존 테이블 컬럼에 적용하는 경우 (기존방식) 

-- 1. 시퀀스 생성
CREATE SEQUENCE 시퀀스이름;

-- ex
CREATE SEQUENCE board_sequence;


-- 2. 기존 테이블 컬럼에 시퀀스 적용
ALTER TABLE 테이블이름 ALTER COLUMN 컬럼이름 SET DEFAULT nextval('시퀀스이름');

-- ex
ALTER TABLE board ALTER COLUMN board_no SET DEFAULT nextval('board_sequence');

 

3. 테이블을 새로 생성하여 적용하는 경우 (최근방식) 

-- 1. SERIAL 타입으로 생성
create table 테이블이름(
	no SERIAL	
);

 

그리고 개발을 하다보면, 데이터를 INSERT하면서 생성된 튜플의 고유 index를 얻어와야 하는 경우가 있다.
그럴 경우에는 데이터를 넣자마자 매핑되어있는 시퀀스의 값을 바로 읽어와서 사용하면된다.

-- 1. 시퀀스의 현재 값 SELECT
SELECT currval('시퀀스이름');

-- example
SELECT currval('board_sequence');


-- 2. 시퀀스의 다음 값 SELECT => 호출시 시퀀스 증가
SELECT nextval('시퀀스이름');

-- example
SELECT nextval('board_sequence');

-- 3. 가장 최근에 사용한 시퀀스의 현재 값 SELECT
SELECT lastval();
반응형

'DataBase > PostgreSQL' 카테고리의 다른 글

[PostgreSQL] 테이블 생성 및 실습  (0) 2020.01.12
[PostgreSQL] 문법 - COALESCE() 함수  (0) 2019.11.26
[PostgreSQL] 문법 - CASE WHEN  (0) 2019.11.26
PostgreSQL Window 64Bit 설치  (0) 2019.11.17

댓글