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)