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)