Для автоматической генерации номеров строк в таблице можно использовать генератор последовательностей. Последовательность — это объект базы данных, который создается одним пользователем, но может совместно использоваться несколькими пользователями.
Типичное применение последовательностей — это создание значений первичного ключа, которые должны быть уникальными для каждой строки. Последовательность генерируется и увеличивается (или уменьшается) внутренней программой Oracle. Это может сэкономить время, т.к. не приходится создавать специальную программу генерации последовательностей.
Числа последовательности хранятся и генерируются независимо от таблиц. Одна и та же последовательность может одновременно применяться к нескольким таблицам.
Создание последовательности
Последовательность для автоматической генерации чисел создается командой CREATE SEQUENCE.
Синтаксис
CREATE SEQUENCE последовательность
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVAUJE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
где:
последовательность
имя генератора последовательности
INCREMENT BY n
интервал между двумя последовательными номерами; n является целым числом. Если это предложение опущено, приращение при генерации чисел равно 1.
START WITH n
первое генерируемое число в последовательности. Если это предложение опущено, последовательность начинается с 1.
MAXVALUE n
максимальное значение, которое может генерировать последовательность.
NOMAXVALUE
максимальное значение по умолчанию, равное 1027.
MINVALUE n
минимальное значение последовательности.
NOMINVALUE
задает минимальное значение, равное 1.
CYCLE | NOCYCLE
продолжается ли циклическая генерация чисел после достижения максимального или минимального значения. Значение по умолчанию — NOCYCLE.
CACHE n | NOCACHE
количество чисел, которые сервер Oracle распределяет предварительно и хранит в памяти. По умолчанию сервер хранит в кэш-памяти 20 значений.
Пример.
Создание последовательности с именем film_id в таблице film. Первое число последовательности — 51. Кэширование значений и циклическая генерация чисел не заданы.