Spec-Zone.ru › MariaDB

СОЗДАНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ

Синтаксис

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

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(). Установить следующее значение для последовательности.
  • АВТОИНКРЕМЕНТ
  • ПОКАЗАТЬ СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в данном содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API