Последовательности создаются при помощи оператора 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;