Craig Ringer 의 답변 이 맞습니다. 다음은 Postgres 9.1 이상에 대한 정보입니다.
확장 프로그램이 있습니까?
Postgres 설치 ( Postgres lingo 의 클러스터) 용으로 이미 확장 된 경우에만 확장을 설치할 수 있습니다 . 예를 들어, uuid-ossp 확장명 은 EnterpriseDB.com에서 친절하게 제공 하는 Mac OS X 용 설치 프로그램의 일부로 포함 된 것을 발견했습니다 . 수십 개의 확장 중 하나를 사용할 수 있습니다.
Postgres 클러스터에서 uuid-ossp 확장을 사용할 수 있는지 확인하려면 이 SQL을 실행하여 pg_available_extensions
시스템 카탈로그 를 쿼리하십시오 .
SELECT * FROM pg_available_extensions;
확장 설치
해당 UUID 관련 확장 을 설치하려면 이 SQL에 표시된대로 CREATE EXTENSION 명령을 사용하십시오 .
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
주의 : 나는 반대로 문서화에도 불구하고 확장자 이름 주위에 QUOTATION MARK 문자가 필요하다는 것을 알았습니다.
SQL 표준위원회 또는 Postgres 팀은 해당 명령에 대해 이상한 이름을 선택했습니다. 내 생각에 그들은 "설치 확장"또는 "사용 확장"과 같은 것을 선택 했어야했다.
설치 확인
이 SQL을 실행하여 pg_extension
시스템 카탈로그 를 조회하여 원하는 데이터베이스에 확장이 성공적으로 설치되었는지 확인할 수 있습니다 .
SELECT * FROM pg_extension;
기본값으로 UUID
자세한 내용은 질문 : Postgres의 UUID 열 기본값
올드 웨이
위의 정보는 Postgres 9.1에 추가 된 새로운 확장 기능을 사용합니다 . 이전 버전에서는 .sql 파일 에서 스크립트를 찾아 실행해야했습니다 . 확장 기능은 확장 기능 의 사용자 / 소비자 부분에 대한 작업을 줄 이도록 확장 작성자 에게 더 많은 작업을 제공하여 설치를보다 쉽게하도록 추가되었습니다 . 자세한 내용은 내 블로그 게시물 을 참조하십시오 .
UUID의 유형
그런데 질문의 코드는 함수를 호출합니다 uuid_generate_v4()
. 이는 거의 모든 128 비트가 임의로 생성 되는 버전 4 로 알려진 유형을 생성합니다. 작은 행 집합에서는 제한적으로 사용하는 것이 좋지만 실제로 충돌 가능성을 없애려면 UUID의 다른 "버전"을 사용하십시오.
예를 들어, 원래 버전 1 은 호스트 컴퓨터 의 MAC 주소 와 현재 날짜-시간 및 임의의 숫자를 결합하므로 충돌 가능성은 거의 없습니다.
자세한 내용 은 관련 질문에 대한 답변 을 참조하십시오 .