답변:
전화 DEFAULT
중 하나를 호출 할 수있는 열을 정의 할 때 OSSP의 UUID의 기능을. Postgres 서버는 행이 삽입 될 때마다 자동으로 함수를 호출합니다.
CREATE TABLE tbl
(
pkey UUID NOT NULL DEFAULT uuid_generate_v1() ,
CONSTRAINT pkey_tbl PRIMARY KEY ( pkey )
)
반면 포스트 그레스 밖 박스 지원 저장 UUID (범용 고유 식별자) 자신 고유의 값을 128 비트 , 형태 발생 UUID 값은 플러그 - 인을 요구한다. Postgres에서 플러그인은로 알려져 있습니다 extension
.
확장 프로그램을 설치하려면을 호출하십시오 CREATE EXTENSION
. 다시 설치하지 않으려면을 추가하십시오 IF NOT EXISTS
. 자세한 내용은 내 블로그 게시물 을 참조하거나 StackOverflow에서이 페이지를 참조하십시오 .
우리가 원하는 확장은 UUID, OSSP uuid 작업을 위해 C로 빌드 된 오픈 소스 라이브러리 입니다. 포스트 그레스이 라이브러리의 빌드는 종종 같은로 포스트 그레스의 설치와 함께 제공됩니다 제공하는 그래픽 설치 프로그램 에 의해 엔터프라이즈 DB 와 같은 클라우드 제공 업체 또는 포함 PostgreSQL를위한 아마존 RDS .
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
참고 항목 확장의 문서 UUID 값의 다양한 종류를 생성하기 위해 제공되는 여러 명령의 목록을 볼 수 있습니다. 컴퓨터의 MAC 주소 와 현재 날짜-시간 및 작은 임의의 값으로 빌드 된 UUID의 원래 버전을 얻으려면을 호출하십시오 uuid_generate_v1()
.
SELECT uuid_generate_v1();
672124b6-9894-11e5-be38-001d42e813fe
이 테마의 이후 변형은 대체 종류의 UUID를 위해 개발되었습니다. 예를 들어 보안 또는 개인 정보 보호를 위해 서버의 실제 MAC 주소를 기록하지 않는 사람들이있을 수 있습니다. Postgres 확장 프로그램은 5 가지 종류의 UUID와 "nil"UUID를 생성 00000000-0000-0000-0000-000000000000
합니다.
새로 삽입 된 행에 대한 기본값을 생성하기 위해 해당 메소드 호출을 자동으로 수행 할 수 있습니다. 열을 정의 할 때 다음을 지정하십시오.
DEFAULT uuid_generate_v1()
다음 예제 테이블 정의에 사용 된 명령을 참조하십시오.
CREATE TABLE public.pet_
(
species_ text NOT NULL,
name_ text NOT NULL,
date_of_birth_ text NOT NULL,
uuid_ uuid NOT NULL DEFAULT uuid_generate_v1(), -- <====
CONSTRAINT pet_pkey_ PRIMARY KEY (uuid_)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.pet_
OWNER TO postgres;
UUID - OSSP의 플러그인을 생성 할 수 있습니다 UUID의 다양한 버전을 .
uuid_generate_v1()
uuid_generate_v1mc()
uuid_generate_v3( namespace uuid, name text )
uuid_generate_v4()
uuid_generate_v5( namespace uuid, name text )
uuid_nil()
00000000-0000-0000-0000-000000000000
. 알 수없는 UUID 값에 대한 플래그로 사용됩니다. A와 알려진 전무 UUID .유형을 비교하려면 질문, 어떤 UUID 버전을 사용해야합니까?를 참조하십시오 .
버전 3 및 5가 궁금하다면이 질문, v5 UUID 생성을 참조하십시오 . 이름과 네임 스페이스 란 무엇입니까? .
더 설명을 참조 내 대답 비슷한 질문에 내 블로그 게시물 포스트 그레스에 JDBC에서 UUID 값을 .
getObject()
사용할 수 있는 결과를 캐스트 할 필요 는 없습니다.UUID id = rs.getObject("uuid_", UUID.class);
Basil의 매우 자세한 답변에 약간의 추가 사항이 있습니다.
현재 때문에 대부분 사용하는 pgcrypto를 대신, uuid_generate_v1()
당신이 사용할 수있는 gen_random_uuid()
A의 버전 4 UUID의 값입니다.
먼저 Postgres에서 pgcrypto 를 활성화 하십시오.
CREATE EXTENSION "pgcrypto";
열의 DEFAULT를 다음으로 설정하십시오.
DEFAULT gen_random_uuid()