Модификация последовательности
Функция
Определение оператора модификации общей или личной последовательности.
Спецификация
::=
[{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;