uuid-ossp

Функции для генерирования UUID.
Схема размещения: ext.
Использование модуля позволяет генерировать универсальные уникальные идентификаторы (UUID) по одному из нескольких стандартных алгоритмов и специальные UUID-константы.
Модуль uuid-ossp необходим только при наличии особых потребностей, для удовлетворения которых не хватает стандартной функциональности в ядре PostgreSQL. Встроенные в ядро способы генерирования UUID описаны в UUID Functions.
В следующей таблице перечислены функции, предназначенные для генерации UUID. Четыре алгоритма для генерации UUID, обозначаемые номерами версий 1, 3, 4 и 5, описаны в стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. Алгоритма версии 2 нет. Каждый из этих алгоритмов предназначен для различных сфер применения.
ФункцияВходные аргументыВозвращаемое значениеОписание
uuid_generate_v1
uuidГенерирует UUID версии 1, включающий в себя MAC-адрес компьютера и текущее время. UUID такого типа может быть неприемлем в случае, когда важна конфиденциальность, поскольку раскрывает «личность» компьютера, создавшего идентификатор, и время этой операции
uuid_generate_v1mc
uuidГенерирует UUID версии 1, но вместо реального MAC-адреса компьютера подставляет случайный групповой MAC-адрес
uuid_generate_v3
namespace uuid;
name text.
uuidГенерирует UUID версии 3 для заданного пространства имен UUID и указанного имени. Пространство имен задается одной из специальных констант, которые выдают функции uuid_ns_*(), возвращающие UUID-константы. Теоретически этот UUID может быть любым. Имя задает идентификатор в выбранном пространстве имен
uuid_generate_v4
uuidГенерирует UUID версии 4, который полностью определяется случайными числами
uuid_generate_v5
namespace uuid;
name text.
uuidГенерирует UUID версии 5, который похож на версию 3, но хеш рассчитывается по алгоритму SHA-1. Версия 5 предпочтительнее версии 3, так как SHA-1 безопаснее MD5
Функции, возвращающие UUID-константы:
ФункцияВозвращаемое значениеОписание
uuid_nil
uuidВыдает «нулевой» UUID, который не считается действительным UUID
uuid_ns_dns
uuidВыдает константу, обозначающую пространство имен DNS для UUID
uuid_ns_url
uuidВыдает константу, обозначающую пространство имен URL для UUID
uuid_ns_oid
uuidВыдает константу, обозначающую пространство имен идентификаторов объектов ISO (OID, ISO Object Identifier) для UUID
uuid_ns_x500
uuidВыдает константу, обозначающую пространство имен с уникальными именами X.500 для UUID

Использование модуля

Пример использования модуля:
SELECT uuid_generate_v1();
Пример вывода результата выполнения запроса:
Раскрыть type=sql
           uuid_generate_v1
--------------------------------------
 2193434e-c7a8-11ed-b3d2-0050560a7d0b
(1 row)
Функция uuid_generate_v3: из параметра name будет получен MD5-хеш, так что из сгенерированного UUID нельзя будет восстановить имя. В генерируемых таким алгоритмом UUID нет элемента случайности или зависимости от окружения, так что они могут быть воспроизведены.
SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');
Пример вывода результата выполнения запроса:
Раскрыть type=sql
           uuid_generate_v3
--------------------------------------
 cf16fe52-3365-3a1f-8572-288d8d2aaa46
(1 row)
Создание таблицы со столбцом UUID: создание таблицы, первичным ключом которой является тип данных UUID. Значения столбца первичного ключа будут сгенерированы автоматически с помощью функции uuid_generate_v4().
CREATE TABLE contacts (
    contact_id uuid DEFAULT uuid_generate_v4 (),
    first_name      VARCHAR NOT NULL,
    last_name       VARCHAR NOT NULL,
    email           VARCHAR NOT NULL,
    phone           VARCHAR,
    PRIMARY KEY (contact_id)
);
В этом утверждении типом данных столбца contact_id является UUID. Столбец contact_id имеет значения по умолчанию, предоставляемые функцией uuid_generate_v4(), поэтому всякий раз, когда вставлена в новую строку без указания значения для contact_id, PostgreSQL вызовет функцию uuid_generate_v4() для генерации для нее значения.
Вставить некоторые данные в таблицу contacts:
INSERT INTO contacts (
    first_name,
    last_name,
    email,
    phone
)
VALUES
    (
        'John',
        'Smith',
        'john.smith@example.com',
        '408-237-2345'
    ),
    (
        'Jane',
        'Smith',
        'jane.smith@example.com',
        '408-237-2344'
    ),
    (
        'Alex',
        'Smith',
        'alex.smith@example.com',
        '408-237-2343'
    );
Выполнить запрос ко всем строкам в таблице contacts, используя инструкцию SELECT:
SELECT * FROM contacts;
Пример вывода результата выполнения запроса:
Раскрыть type=sql
              contact_id              | first_name | last_name |         email          |    phone
--------------------------------------+------------+-----------+------------------------+--------------
 4b92898b-ac3e-4120-b623-6b168294e442 | John       | Smith     | john.smith@example.com | 408-237-2345
 34d4babb-e443-4bea-9005-93806e9a14d5 | Jane       | Smith     | jane.smith@example.com | 408-237-2344
 f5b1fd1f-4515-415f-a3fd-56c31d56bc37 | Alex       | Smith     | alex.smith@example.com | 408-237-2343
(3 rows)
В результате столбец contact_id заполнен значениями UUID, сгенерированными функцией uuid_generate_v4().

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю uuid-ossp можно получить по ссылке.
Предыдущий раздел
unaccent
Следующий раздел
vacuumlo
Была ли страница полезной?