Postgresql эквивалент этой функции на основе UUID - PullRequest
0 голосов
/ 03 марта 2020

Я нахожусь в процессе оценки PostgreSQL для новых проектов, для которых мы иначе использовали бы MySql. Я генерирую эти типы идентификаторов в MySql, который является перевернутым GUID V1:

create function get_uuid() returns binary(16)
begin
    return (
        select unhex(concat(
            substr(uuid(), 15, 4),
            substr(uuid(), 10, 4),
            substr(uuid(), 1, 8),
            substr(uuid(), 20, 4),
            substr(uuid(), 25))) as new_id
        );
end;

Я бы тогда использовал функции mysql hex () и unhex () для преобразования их в / из двоичного кода (16), чтобы вдвое уменьшить объем памяти, необходимый для поля.

Все это задокументировано здесь, если вам интересно:

https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/

НО ... что я ищу, это эквивалентная функция для Postgres. Я на 100% новичок в этом, на сегодняшний день.

1 Ответ

3 голосов
/ 03 марта 2020

Этот хак не нужен с Postgres. Он имеет собственный тип данных uuid, который занимает всего 16 байтов для хранения значения UUID.

...