СОЗДАНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ
Синтаксис
CREATE [OR REPLACE] [TEMPORARY] SEQUENCE [IF NOT EXISTS] sequence_name [ INCREMENT [ BY | = ] increment ] [ MINVALUE [=] minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE [=] maxvalue | NO MAXVALUE | NOMAXVALUE ] [ START [ WITH | = ] start ] [ CACHE [=] cache | NOCACHE ] [ CYCLE | NOCYCLE] [table_options]
Параметры для CREATE SEQUENCE могут быть указаны в любом порядке, необязательно после чего следует table_options.
table_options может быть любым из обычных параметров таблицы в СОЗДАТЬ ТАБЛИЦУ, но наиболее полезными являются ENGINE=... и COMMENT=.
NOMAXVALUE и NOMINVALUE предназначены для создания ПОСЛЕДОВАТЕЛЬНОСТЕЙ с использованием синтаксиса Oracle.
Описание
СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ создаст последовательность, генерирующую новые значения при вызове с NEXT VALUE FOR sequence_name. Это альтернатива АВТОИНКРЕМЕНТУ, когда требуется больший контроль над генерированием чисел. Поскольку ПОСЛЕДОВАТЕЛЬНОСТЬ кэширует значения (до CACHE значений), в некоторых случаях она может быть значительно быстрее, чем АВТОИНКРЕМЕНТ. Ещё одним преимуществом является доступ к последнему сгенерированному значению всех используемых последовательностей, что решает одну из ограничений LAST_INSERT_ID().
СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ требует привилегии СОЗДАНИЯ.
УДАЛИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ может быть использовано для удаления последовательности, а ИЗМЕНИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ — для её изменения.
Аргументы для создания
Можно использовать следующие параметры:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
| INCREMENT | 1 | Приращение для значений. Может быть отрицательным. Установка приращения 0 приводит к использованию значения системной переменной auto_increment_increment во время создания, которое всегда является положительным числом. (см. MDEV-16035). |
| MINVALUE | 1 если INCREMENT > 0 и -9223372036854775807 если INCREMENT < 0 | Минимальное значение для последовательности |
| MAXVALUE | 9223372036854775806 если INCREMENT > 0 и -1 если INCREMENT < 0 | Максимальное значение для последовательности |
| START | MINVALUE если INCREMENT > 0 и MAX_VALUE если INCREMENT< 0 | Первое значение, которое сгенерирует последовательность |
| CACHE | 1000 | Количество значений, которые должны быть кэшированы. 0, если нет кэширования. Базовая таблица будет обновлена в первый раз, когда сгенерируется новое значение последовательности, и каждый раз, когда кэш исчерпан. |
Если используется CYCLE, то последовательность должна начинаться снова с MINVALUE, после того как значения закончились. Значение по умолчанию — NOCYCLE.
Ограничения на аргументы создания
Для создания корректной последовательности должны выполняться следующие условия:
- MAXVALUE >= start
- MAXVALUE > MINVALUE
- START >= MINVALUE
- MAXVALUE <= 9223372036854775806 (LONGLONG_MAX-1)
- MINVALUE >= -9223372036854775807 (LONGLONG_MIN+1)
Обратите внимание, что последовательности не могут генерировать максимальное/минимальное 64-битное число из-за ограничения MINVALUE и MAXVALUE.
Атомарные DDL
MariaDB 10.6.1 поддерживает атомарные DDL и CREATE SEQUENCE является атомарным.
Примеры
CREATE SEQUENCE s START WITH 100 INCREMENT BY 10; CREATE SEQUENCE s2 START WITH -100 INCREMENT BY -10;
Следующее утверждение завершается ошибкой, так как приращение конфликтует с параметрами по умолчанию
CREATE SEQUENCE s3 START WITH -100 INCREMENT BY 10; ERROR 4082 (HY000): Sequence 'test.s3' values are conflicting
Последовательность может быть создана, указав допустимые минимальные и максимальные значения:
CREATE SEQUENCE s3 START WITH -100 INCREMENT BY 10 MINVALUE=-100 MAXVALUE=1000;
См. также
- Обзор последовательностей
- ИЗМЕНИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ
- УДАЛИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ
- Следующее значение для
- Предыдущее значение для
- SETVAL(). Установить следующее значение для последовательности.
- АВТОИНКРЕМЕНТ
- ПОКАЗАТЬ СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/create-sequence/