Відповідь на Крейга Рінгера правильно. Ось трохи більше інформації для Postgres 9.1 та пізніших версій…
Чи доступне розширення?
Ви можете встановити розширення лише у тому випадку, якщо воно вже було побудоване для вашої установки Postgres (ваш кластер у Postgres lingo). Наприклад, я знайшов розширення uuid-ossp, що входить до складу інсталятора для Mac OS X, люб’язно наданого EnterpriseDB.com. Будь-яке з кількох десятків розширень може бути доступним.
Щоб побачити, чи доступне розширення uuid-ossp у вашому кластері Postgres, запустіть цей SQL для запиту pg_available_extensions
системного каталогу:
SELECT * FROM pg_available_extensions;
Встановити розширення
Щоб встановити розширення, пов'язане з UUID , використовуйте команду CREATE EXTENSION, як показано в цьому SQL:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Остерігайтеся: я знайшов символи QUOTATION MARK навколо імені розширення, незважаючи на те, що документація не суперечить.
Комітет зі стандартів SQL або команда Postgres вибрали непарне ім'я для цієї команди. На мій погляд, вони повинні були вибрати щось на кшталт "ВСТАНОВИТИ РОЗШИРЕННЯ" або "ВИКОРИСТИТИ РОЗШИРЕННЯ".
Перевірте встановлення
Ви можете переконатися, що розширення було встановлено в потрібній базі даних, запустивши цей SQL для запиту pg_extension
системного каталогу:
SELECT * FROM pg_extension;
UUID як значення за замовчуванням
Для отримання додаткової інформації див. Запитання: значення за замовчуванням для стовпця UUID у Postgres
Старий шлях
У наведеній вище інформації використовується нова функція розширень, додана до Postgres 9.1. У попередніх версіях нам довелося знайти і запустити скрипт у файлі .sql . Функція розширень була додана для полегшення встановлення, торгуючи трохи більшою роботою для творця розширення для меншої роботи з боку користувача / споживача розширення. Дивіться мій пост у блозі для більшого обговорення
Типи UUID
До речі, код у питанні викликає функцію uuid_generate_v4()
. Це створює тип, відомий як Версія 4, де майже всі 128 біт генеруються випадковим чином. Хоча це нормально для обмеженого використання на менших наборах рядків, якщо ви хочете практично виключити будь-яку можливість зіткнення, використовуйте іншу "версію" UUID.
Наприклад, оригінальна версія 1 поєднує MAC-адресу хост-комп'ютера з поточним датою і часом і довільним номером, ймовірність зіткнення практично не дорівнює.
Для більш детальної дискусії дивіться мою відповідь на пов'язане запитання.