전체 용어 목록

IDENTITY 열

PostgreSQL의 IDENTITY 열이란 무엇인가요?

IDENTITY 열은 암시적 시퀀스에서 값을 자동으로 받습니다. PostgreSQL에서 자동 증가 키를 만드는 SQL 표준 방식입니다.

IDENTITY 열은 GENERATED ALWAYS AS IDENTITY 또는 GENERATED BY DEFAULT AS IDENTITY로 선언합니다. PostgreSQL은 이 열에 암시적 시퀀스를 연결하고, 삽입 시 값이 제공되지 않으면 그 시퀀스에서 값을 가져와 열을 채웁니다.

GENERATED ALWAYS에서는 문에 OVERRIDING SYSTEM VALUE를 지정하지 않는 한 INSERT의 명시적 값이 거부되며, BY DEFAULT에서는 명시적 값이 우선합니다. IDENTITY 열은 SQL 표준을 따르는 반면, serial은 PostgreSQL 고유의 오래된 축약 표기입니다. 다른 시퀀스와 마찬가지로 ROLLBACK된 트랜잭션이 사용한 번호는 재사용되지 않으므로 번호에 빈틈이 생기는 것은 정상입니다.

예제

이 예제는 id 없이 두 행을 삽입하고, 생성된 값을 반환한 다음, 열 뒤에 있는 시퀀스의 이름을 보여 줍니다.

CREATE TABLE tickets (
  id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  subject text NOT NULL
);
INSERT INTO tickets (subject) VALUES ('first'), ('second') RETURNING id;

SELECT pg_get_serial_sequence('tickets', 'id');

확장 없이 기본 PostgreSQL 16 또는 17에서 실행되는 일반 SQL입니다. 버려도 되는 빈 데이터베이스에서 실행하세요.

출처

PostgreSQL 공식 문서(영문)입니다.

관련 용어