Создание и удаление последовательностей

Последовательности создаются при помощи оператора CREATE SEQUENCE, имеющей следующий синтаксис:

 

CREATE SEQUENCE имя_последовательности

[START WITH начальное_значение]

[INCREMENT BY приращение]

[MAXVALUE максимальное_значение | NOMAXVALUE]

[MINVALUE минимальное_значение | NOMINVALUE]

[CYCLE | NOCYCLE]

[CACHE размер_кэша | NOCACHE];

 

Все параметры последовательности имеют значения по умолчанию. Если не указывать ни один из перечисленных параметров, то последовательность начнется с 1, приращение будет равно 1, максимального и минимального значения не будет, последовательность не будет цикличной, и при генерации элементов не будет использоваться кэш. Например, следующая команда создает последовательность с параметрами по умолчанию, которую можно использовать для генерации номеров строк для столбца N_n таблицы ST_Hobby:

 

CREATE SEQUENCE ST_Hobby;

 

Последовательность может быть как возрастающей, так и убывающей, что задается положительным или отрицательным значением приращения. Если указано максимальное или минимальное значение последовательности, то по его достижении генерация новых элементов прекратится, либо начнется сначала, если был задан параметр CYCLE. В противном случае, при отсутствии параметра CYCLE, по достижении минимума или максимума последовательности СУБД будет генерировать сообщение об ошибке при попытке получение очередного ее элемента.

Опция CACHE команды CREATE SEQUENCE обеспечивает предварительную генерацию нескольких номеров последовательности и поддерживает их в памяти (кэширует), так что доступ к ним ускоряется. Когда использован последний из номеров в кэше, ORACLE считывает в кэш очередную группу номеров.

Несмотря на то, что последовательности жестко не связаны с таблицами, чаще всего для каждой таблицы, имеющей независимый идентификатор, создается отдельная последовательность. Если по смыслу необходимо, чтобы в двух или более таблицах были абсолютно уникальные идентификаторы, то возможно использование одной единственной последовательности.

Удаление последовательностей осуществляется с помощью команды DROP SEQUENCE. Например:

 

DROP SEQUENCE ST_Hobby;

 

Изменение последовательностей

В любой момент можно поменять любой из параметров последовательности, за исключением параметра START WITH, при помощи команды ALTER SEQUENCE. Например:

 

ALTER SEQUENCE ST_Hobby

INCREMENT BY 10

MAXVALUE 10000

CYCLE

CACHE 20;