Skip to content

Latest commit

 

History

History
53 lines (41 loc) · 2.92 KB

File metadata and controls

53 lines (41 loc) · 2.92 KB

Универсальный уникальный идентификатор UUID

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();