CREATE SEQUENCE

CREATE SEQUENCE — создать генератор последовательности

Синтаксис

CREATE SEQUENCE [ IF NOT EXISTS ] имя
    [ AS тип_данных ]
    [ INCREMENT [ BY ] шаг ]
    [ MINVALUE мин_значение | NO MINVALUE ] [ MAXVALUE макс_значение | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE кеш ] [ [ NO ] CYCLE ]
    [ OWNED BY { имя_таблицы.имя_столбца | NONE } ]
    WITH ( [ global ],
           [ block_size = block_size ]
         )
        

Описание

Расширения Shardman для команды CREATE SEQUENCE позволяют создавать числовые генераторы глобальных последовательностей. Эта команда создаёт обычную последовательность PostgreSQL на всех узлах кластера и записывает параметры последовательности в словарь состояния глобальной последовательности. (Подробности описаны в Раздел 7.6.)

После создания глобальной последовательности функцию shardman.next_value можно использовать для создания значений последовательности, которые гарантированно будут уникальными во всём кластере. Стандартные функции управления последовательностями (например, nextval и setval) нельзя использовать для глобальных последовательностей, так как это может привести к неожиданным результатам.

Параметры

В дополнение к параметрам, распознаваемым PostgreSQL, следующие параметры также поддерживаются Shardman.

global

Если указан, объект последовательности создаётся как глобальная последовательность, управляемая Shardman.

block_size

Количество элементов, выделенных для локальной последовательности. Значение по умолчанию — 65536.

Примечания

Предполагается, что глобальные последовательности ведут себя аналогично обычным последовательностям PostgreSQL (см. CREATE SEQUENCE) с некоторыми ограничениями, наиболее важным из которых является то, что глобальная последовательность всегда увеличивается. Нет поддержки отрицательного приращения значений или зацикливания (как в CYCLE), что также означает, что практически нет разницы между минимальным значением последовательности и его начальным значением, поэтому оба параметра не могут быть заданы одновременно во избежание путаницы.

Как и в случае с обычными объектами последовательности, команда DROP SEQUENCE удаляет глобальную последовательность, а команда ALTER SEQUENCE позволяет изменить некоторые параметры глобальной последовательности.

Примеры

Создать глобальную последовательность с именем serial.

CREATE SEQUENCE serial MINVALUE 100 WITH (global);

Получить следующее число из этой последовательности:

SELECT shardman.next_value('serial');

 next_value
------------
        100
(1 row)