postgresql 은 오라클과 마찬가지로 시퀀스를 사용할수 있다.
세부적으로는 owned by, serial, generated 등 생소한 구문들이 조금 있다.
1. 문법
CREATE [ { TEMPORARY | TEMP } | UNLOGGED ] SEQUENCE [ IF NOT EXISTS ] name
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
2. owned by
OWNED BY는 시퀀스를 특정 테이블의 특정 컬럼과 명시적으로 연결
이렇게 연결된 테이블을 삭제할 때 해당 시퀀스도 자동으로 삭제됨.
3. serial
SERIAL은 PostgreSQL에서 자동 증가 컬럼을 쉽게 만들기 위한 편의 타입
SERIAL을 지정하면, 내부적으로 시퀀스를 생성하고,
해당 컬럼의 기본값을 nextval('시퀀스명')으로 지정하며, 시퀀스와 컬럼을 OWNED BY로 연결한다.
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
name VARCHAR(20)
);
이렇게 생성하면 아래의 작업이 내부적으로 이루어진다.
- 시퀀스 생성
- 컬럼 기본값 지정
- OWNED BY 설정
3. generated
GENERATED ... AS IDENTITY는 ANSI SQL 표준에 맞춘 자동 증가 컬럼 정의 방식 이다.
PostgreSQL 10 이상에서 지원하며, 마이그레이션이나 표준 호환성이 중요할 때 사용한다.
1) ALWAYS: 값을 직접 입력하면 오류 발생 (무조건 자동 증가)
2) BY DEFAULT: 값을 직접 입력할 수도 있고, 입력하지 않으면 자동 증가
CREATE TABLE users (
user_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(20)
);
'생계 > PostgreSQL' 카테고리의 다른 글
[ postgresql ] 파라미터 (1) | 2025.07.07 |
---|---|
[ Postgresql ] 메모리 구조 (0) | 2025.07.07 |
[ postgresql ] extension (0) | 2025.07.07 |
[ PostgreSQL ] vacuum 에 대해서 알아보자 (1) | 2025.07.05 |
[ postgresql ] 클라이언트 툴 psql 설치 접속 간단한 사용법 알아보자 (0) | 2024.10.23 |