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.)

После создания глобальной последовательности функцию 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 nextval('serial');
 nextval
---------
     100
(1 row)