Как сгенерировать uuid в postgresql
Запись: and-semakin/mytetra_data/master/base/16108693370k09jetb8w/text.html на raw.githubusercontent.com
В PostgreSQL 13 и новее можно генерировать UUID v4 (самый популярный алгоритм) из коробки, без расширений:
Для других алгоритмов UUID придётся использовать расширение (описано ниже).
Чтобы сгенерировать новый UUID прямо в PostgreSQL до версии 13 потребуется активировать специальное расширение:
CREATE EXTENSION IF NOT EXISTS «uuid-ossp»;
Когда расширение создано, можно использовать следующую функцию:
Также можно использовать эту функцию в качестве значения для столбца по умолчанию:
CREATE TABLE tbl
pkey UUID NOT NULL DEFAULT uuid_generate_v1(),
CONSTRAINT pkey_tbl PRIMARY KEY (pkey)
- Вывод диаграмы БД в PostgreSQL
- Размер БД или таблицы в PostgreSQL
- Временно отключить триггеры в PostgreSQL
- Установить схему по умолчанию в PostgreSQL
- Конвертировать integer в boolean в PostgreSQL
- Создать материализованное представление в PostgreSQL
- Создать временную таблицу в PostgreSQL
- Обновить или создать (upsert) строку в PostgreSQL
- Просмотреть определение представления (view definition) в PostgreSQL
- Показать список БД и выбрать БД в psql
- Удалить БД в PostgreSQL
- Переименовать БД в PostgreSQL
- Показать выполняющиеся запросы PostgreSQL
- psql — сохранить пароль для подключения к серверу PostgreSQL
- Задержка/пауза (pg_sleep) в PostgreSQL
- Получить список индексов на таблице в PostgreSQL
- Показать количество строк во всех таблицах в БД в PostgreSQL
- Инвертировать булевое значение в PostgreSQL
- Сменить пейджер в pgcli
- Сайт для работы с планами запросов в PostgreSQL
- Убить зависший запрос в PostgreSQL
- Настроить ограничения для планировщика запросов в PostgreSQL
- Сгенерировать последовательность в PostgreSQL
- Получить количество клиентов, подключенных к БД, в PostgreSQL
- Показать список таблиц в БД в PostgreSQL
- Отключить всех клиентов от БД в PostgreSQL
- Вывод в файл в psql
- Обновить значение в jsonb в PostgreSQL
- Узнать расположение файла конфигурации в PostgreSQL
- Получить размер поля в PostgreSQL
- Отсортировать строки в случайном порядке в PostgreSQL
- Выгрузить результат запроса в файл в PostgreSQL
- Показать установленные и доступные расширения в PostgreSQL
- Запретить подключение к БД в PostgreSQL
- Статистика медленных запросов через pg_stat_statements в PostgreSQL
- Создать базу данных, если она ещё не создана, в PostgreSQL
- Вставить несколько записей одним запросов в PostgreSQL
- Удалить столбец из таблицы в PostgreSQL
- Узнать, какие запросы блокируют друг друга в PostgreSQL
- Оконная функция row_number для нумерации строк в выводе в PostgreSQL
- Оконные функции для ранжирования строк в выводе в PostgreSQL
- Подключиться к PostgreSQL серверу через DSN (строку подключения) через psql
- Убедиться, что при подключении к PostgreSQL было использовано шифрование (SSL/TLS)
- Создать UUID в PostgreSQL
- Вставить данные, полученные из SELECT-запроса в PostgreSQL
- Получить список незавершенных (зависших) транзакций в PostgreSQL
- Создать функцию, которая ничего не возвращает, в PostgreSQL
- Перенести данные из одной таблицы в другую в PostgreSQL
- Арифметические операции над датами в PostgreSQL
- Выбрать таблицу (несколько строк), заполненную константными значениями в PostgreSQL
Как сгенерировать uuid в postgresql
UUID (universally unique identifier) — универсальный уникальный идентификатор (подробное определение в Википедии) бывает нужен в случаях, когда обычные числовые идентификаторы не подходят.
В PostgreSQL имеется тип uuid , а для того, чтобы иметь возможность генерировать его автоматически в PostgreSQL 9.3 и выше нужно установить расширение uuid-ossp для базы данных, в которой предполагается его использовать.
Сделать это можно командой:
create extension if not exists "uuid-ossp";
После этого для генерации uuid версии 4 можно использовать функцию uuid_generate_v4() .
Подробности о расширении можно найти в официальной документации.
Как сгенерировать uuid в postgresql
Тип данных uuid сохраняет универсальные уникальные идентификаторы (Universally Unique Identifiers, UUID), определённые в RFC 4122, ISO/IEC 9834-8:2005 и связанных стандартах. (В некоторых системах это называется GUID, глобальным уникальным идентификатором.) Этот идентификатор представляет собой 128-битное значение, генерируемое специальным алгоритмом, практически гарантирующим, что этим же алгоритмом оно не будет получено больше нигде в мире. Таким образом, эти идентификаторы будут уникальными и в распределённых системах, а не только в единственной базе данных, как значения генераторов последовательностей.
UUID записывается в виде последовательности шестнадцатеричных цифр в нижнем регистре, разделённых знаками минуса на несколько групп, в таком порядке: группа из 8 цифр, за ней три группы из 4 цифр и, наконец, группа из 12 цифр, что в сумме составляет 32 цифры и представляет 128 бит. Пример UUID в этом стандартном виде:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
PostgreSQL также принимает альтернативные варианты: цифры в верхнем регистре, стандартную запись, заключённую в фигурные скобки, запись без минусов или с минусами, разделяющими любые группы из четырёх цифр. Например:
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 a0eebc999c0b4ef8bb6d6bb9bd380a11 a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
Выводится значение этого типа всегда в стандартном виде.
В PostgreSQL встроены функции хранения и сравнения идентификаторов UUID, но нет внутренней функции генерирования UUID, потому что не существует какого-то единственного алгоритма, подходящего для всех приложений. Сгенерировать UUID можно с помощью дополнительного модуля uuid-ossp, в котором реализованы несколько стандартных алгоритмов, а можно воспользоваться модулем pgcrypto, где тоже есть функция генерирования случайных UUID. Кроме того, можно сделать это в клиентском приложении или в другой библиотеке, подключённой на стороне сервера.
| Пред. | Наверх | След. |
| 8.11. Типы, предназначенные для текстового поиска | Начало | 8.13. Тип XML |
E.44. uuid-ossp
Модуль uuid-ossp предоставляет функции для генерирования универсальных уникальных идентификаторов (UUID) по одному из нескольких стандартных алгоритмов. В нём также есть функции, выдающие специальные UUID-константы.
E.44.1. Функции uuid-ossp
В Таблице E-30 показаны функции, предназначенные для генерации UUID. Четыре алгоритма для генерации UUID, обозначаемые номерами версий 1, 3, 4 и 5, описаны в стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. (Алгоритма версии 2 нет.) Каждый из этих алгоритмов предназначен для различных сфер применения.
Таблица E-30. Функции для генерирования UUID
Эта функция генерирует UUID версии 3 для заданного пространства имён UUID и указанного имени. Пространство имён должно задаваться одной из специальных констант, которые выдаются функциями uuid_ns_*() , перечисленными в Таблице E-31. (Хотя теоретически это может быть любой UUID.) Имя задаёт идентификатор в выбранном пространстве имён.
SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');
Таблица E-31. Функции, возвращающие UUID-константы
E.44.2. Сборка uuid-ossp
В прошлом этот модуль зависел от библиотеки OSSP UUID, что отразилось в его имени. Хотя библиотеку OSSP UUID всё ещё можно найти по адресу http://www.ossp.org/pkg/lib/uuid/, она плохо поддерживается и её становится всё сложнее портировать на новые платформы. Поэтому модуль uuid-ossp теперь на некоторых платформах можно собирать без библиотеки OSSP. Во FreeBSD, NetBSD и некоторых других ОС на базе BSD подходящие функции формирования UUID включены в системную библиотеку libc. В Linux, OS X и некоторых других платформах подходящие функции предоставляются библиотекой libuuid, которая изначально пришла из проекта e2fsprogs (хотя в современных дистрибутивах Linux она является частью пакета util-linux-ng). Вызывая configure, передайте ключ --with-uuid=bsd, чтобы использовать функции BSD, либо --with-uuid=e2fs, чтобы использовать libuuid из e2fsprogs, либо ключ --with-uuid=ossp, чтобы использовать библиотеку OSSP UUID. В конкретной системе может быть установлено сразу несколько библиотек, поэтому configure не выбирает библиотеку автоматически.
Замечание: Если вам нужны только случайные UUID (версии 4), в качестве альтернативы вы можете использовать функцию gen_random_uuid() из модуля pgcrypto.
E.44.3. Автор
| Пред. | Начало | След. |
| unaccent | Уровень выше | xml2 |