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