Модификация последовательности
Функция
Определение оператора модификации общей или личной последовательности.
Спецификация
::=
[{START|RESTART} WITH начальное значение]
[CURRENT VALUE текущее значение]
[INCREMENT BY шаг]
[MAXVALUE верхняя граница|NOMAXVALUE|NO MAXVALUE]
[MINVALUE нижняя граница|NOMINVALUE|NO MINVALUE]
[CYCLE|NO CYCLE]
::=
Синтаксические правила
-
< Имя последовательности >
должно задавать существующую последовательность. -
Описание опций
START WITH
,INCREMENT BY
,MAXVALUE
,NO MAXVALUE
,MINVALUE
,NO MINVALUE
,CYCLE
,NO CYCLE
приведено в пункте «Создание последовательности». -
Опции
START
иRESTART
являются синонимами. -
Опции
NO MAXVALUE
иNOMAXVALUE
являются синонимами. -
Опции
NO MINVALUE
иNOMINVALUE
являются синонимами. -
Одновременное указание опций
START
|RESTART WITH
иCURRENT VALUE
не допускается. -
< Начальное значение >
,< шаг >
,< верхняя граница >
и< нижняя граница >
– целочисленные значения в диапазоне от -9 223 372 036 854 775 808 до +9 223 372 036 854 775 807 (тип данных BIGINT). -
Величины
< начального значения >
,< верхней границы >
и< нижней границы >
не должны логически противоречить друг другу. -
< Шаг >
последовательности должен лежать в интервале от -72057594037927936 до 72057594037927935.
Общие правила
-
Для изменения PUBLIC-последовательности необходим уровень прав DBA.
-
Изменять личную последовательность может только ее создатель при наличии уровня прав
RESOURCE
. -
Если задана опция
START
(RESTART
), то следующим выбираемым значением последовательности будет< начальное значение >
. Оно не сравнивается с ранее выбранными значениями этой же последовательности на предмет непротиворечивости (например, дублирование номера последовательности).create sequence my_seq start with 10; select my_seq.nextval; | 10| alter sequence my_seq start with 6; select my_seq.nextval; | 6| alter sequence my_seq increment by 2; select my_seq.nextval; | 8| select my_seq.nextval; | 10|
-
Опция
CURRENT VALUE
устанавливает новое текущее значение последовательности, не затрагивая прежнее текущее и стартовое значение, установленное при создании или модификации последовательности с помощью опцииSTART
(RESTART
). Новое текущее значение должно находится в границах созданной последовательности.Примечание
Опция
CURRENT VALUE
применяется, как правило, для восстановления текущего значения последовательности после миграции БД.
Примеры
create or replace sequence INT_MINUS_C as integer start with 20 increment by -3 minvalue 7 maxvalue 20 cycle; select INT_MINUS_C.NEXTVAL from $$$SYSRL where rowid < 5; | 20| | 17| | 14| | 11| alter sequence INT_MINUS_C current value 10; select INT_MINUS_C.NEXTVAL from $$$SYSRL where rowid < 5; | 10| | 7| | 20| | 17| create or replace sequence A_SEQ start with 1; select A_SEQ.NEXTVAL; alter sequence A_SEQ increment by 100; select A_SEQ.NEXTVAL; alter sequence A_SEQ increment by -111 maxvalue 1000 minvalue -100000; select A_SEQ.NEXTVAL; alter sequence A_SEQ increment by -1000 nomaxvalue nominvalue; select A_SEQ.NEXTVAL;