CREATE SEQUENCE
Создание нового генератора числовой последовательности.
Синтаксис:
CREATE SEQUENCE последовательность [ INCREMENT приращение ] [ MINVALUE минимум ] [ MAXVALUE максимум ] [ START начало ] [ CACHE кэш ][ CYCLE ]
Параметры:
- последовательность. Имя создаваемой последовательности.
- приращение. Числовое изменение текущего значения последовательности. При положительном приращении генерируется возрастающая, а при отрицательном – убывающая последовательности.
- минимум. Минимальное допустимое значение, генерируемое новой последовательностью. По умолчанию равно 1 для возрастающих последовательностей или -2 147 483 647 для убывающих последовательностей.
- максимум. Максимальное допустимое значение, генерируемое новой последовательностью. По умолчанию равно 2 147 483 647 для возрастающих последовательностей или -1 для убывающих последовательностей.
- начало. Начальное значение последовательности. По умолчанию последовательность начинается с минимума для возрастающих последовательностей или с максимума для убывающих последовательностей.
- кэш. Количество элементов последовательности, кэшируемых в памяти. Увеличение размера кэша до величины, большей 1, повышает быстродействие, поскольку некоторые запросы новых элементов последовательности могут предоставляться из кэша. По умолчанию размер кэша равен 1, при этом последовательность генерируется по одному элементу (то есть кэширование не используется). Чтобы включить кэширование, передайте в параметре CACHE команды CREATE SEQUENCE значение, большее 1.
- CYCLE. При наличии ключевого слова CACHE по достижении максимума или минимума последовательность автоматически переходит к противоположной границе интервала, от которой и генерируются следующие элементы. Направление перехода зависит от того, является последовательность возрастающей или убывающей.
Результаты:
- CREATE. Сообщение выдается при успешном создании новой последовательности.
- ERROR: Relation 'последовательность' already exists. Ошибка – последовательность с заданным именем уже существует.
- ERROR: DefineSequence: START (начало) can't be >= MAXVALUE (максимум). Ошибка – начальное значение последовательности больше допустимого максимума.
- ERROR: DefineSequence: START (начало) can't be < MINVALUE (минимум). Ошибка – начальное значение последовательности меньше допустимого минимума.
- ERROR: DefineSequence: MINVALUE (минимум) can't be >= MAXVALUE (максимум). Ошибка – нижняя граница интервала больше верхней.
Описание
Команда CREATE SEQUENCE создает новый генератор числовой последовательности в базе данных.
Примеры
Пример создания последовательности с именем shipments_ship_id_seq:
booktown=# CREATE SEQUENCE shipments_ship_id_seq booktown-# START 2000 INCREMENT 1; CREATE
После того как последовательность создана, для получения ее следующего элемента можно воспользоваться функцией nextval ():
booktown=# SELECT nextval ('shipments_ship_id_seq'); nextval 200 (1 row)
Последовательности часто используются в команде INSERT:
booktown=# INSERT INTO shipments VALUES booktown-# (nextval('shipments_ship_id_seq'), booktown-# 107. '0394800753', 'now');