UUID Это стандарт идентификации, используемый в создании программного обеспечения,
основное назначение UUID — это позволить распределённым системам уникально
идентифицировать информацию без центра координации. Таким образом, любой может
создать UUID и использовать его для идентификации чего-либо с приемлемым уровнем
уверенности, что данный идентификатор непреднамеренно никогда не будет использован
для чего-то ещё.
В старых версиях postgres для генерации uuid требуется установка расширения.
-- Установка расширения
CREATE extension IF NOT EXISTS "uuid-ossp";
-- Генерация uuid
SELECT uuid_generate_v4();
-- Вывод
8783ddeb-c32f-4570-88ba-6f14b383f92eВ версиях postgres начиная с 12 функция генерации uuid доступна из коробки:
SELECT gen_random_uuid();Postgres это объектно ориентированный сервис, и все созданные в нем объекты,
являются именно объектами, и пусть для пользователя uuid и varchar будут
выглядеть просто как строка с рандомным набором символов, сам postgres относится
к ним как к разным объектам.
У различных внешних сервисов, таких как NGW ( Next Gis Web ) есть функция загрузки
слоев из подключаемых баз данных, а с точки зрения postgres эти типы, uuid и
varchar различны, по этому сервис NGW не способен сериализовать тип данных uuid.
В ситуации когда требуется иметь идентификацию по uuid и есть необходимость
работать с типом данных varchar, мы можем сделать в таблице поле, типа varchar,
но задать этому полю дефолтное значение в виде функции генерации uuid.
-- добавляем таблице поле типа строки
ALTER TABLE public.test
ADD uuid varchar NULL;
-- указываем в качестве дефолтного значения, функцию для генерации uuid
ALTER TABLE public.test
ALTER COLUMN uuid
SET DEFAULT uuid_generate_v4();