
Для автоматической генерации номеров строк в таблице можно использовать такой объект базы данных, как последовательность. Последовательность – это объект базы данных, который создается одним пользователем, но может совместно использоваться несколькими пользователями. Основное назначение последовательности - автоматическая генерация уникальных чисел, которые обычно применяются для получения значений первичного ключа.
Создание последовательности.
Синтаксис:
|
CREATE SEQUENCE последовательность [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] |
|---|
где
последовательность |
Имя последовательности. |
| INCREMENT BY n | Интервал между двумя последовательными номерами; n является целым числом. Если это предложение опущено, приращение при генерации чисел равно 1. |
| START WITH n | Первое генерируемое число в последовательности. Если это предложение опущено, последовательность начинается с 1. |
| MAXVALUE n | Максимальное значение, которое может генерировать последовательность. |
| NOMAXVALUE | Максимальное значение по умолчанию, равное |
| MINVALUE n | Минимальное значение последовательности. |
| NOMINVALUE | Задает минимальное значение, равное 1. |
| CYCLE | NOCYCLE | Продолжается ли циклическая генерация чисел после достижения максимального или минимального значения. |
| CACHE n | NOCACHE | Количество чисел, которые Oracle7 распределяет предварительно и хранит в памяти. По умолчанию сервер хранит в кеш-памяти 20 значений. |
Подчеркнутые параметры используются по умолчанию.
Пример: Создать последовательность S_DEPT_ID для первичного ключа таблицы S_DEPT. Параметр CYCLE использоваться не должен.

Проверка параметров последовательности.
Проверить значения параметров последовательности можно в таблице USER_SEQUENCES словаря данных. Столбец LAST_NUMBER содержит следующее свободное число.

Изменение последовательности.
Изменение шага приращения, максимального и минимального значений, режима циклической генерации значений и кэширования определяется командой ALTER SEQUNCE.
Синтаксис:
|
ALTER SEQUENCE последовательность [INCREMENT BY n] [START WITH n]> [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] |
|---|
Примечание: Для изменения параметров необходимо быть владельцем последовательности или иметь для нее привилегию ALTER. Команда влияет только на числа, генерируемые после изменения. Чтобы начать генерацию с другого числа, необходимо удалить последовательность и создать заново.
Псевдостолбцы NEXTVAL CURRVAL.
Пример: Включение нового отдела под названием "Finance" в регионе 2.

Пример: Просмотр текущего значения последовательности S_DEPT_ID.

Примечания: Запись значений последовательности в сверхоперативную память (кэш) ускоряет доступ к ним. При использовании последовательностей возможные пропуски значений при генерации чисел по причинам: откат транзакции, отказ системы, использование последовательности другим пользователем или для другой таблицы.
Удаление последовательности.
Удаление последовательности из словаря данных производится с помощью команды DROP SEQUENCE. После удаления последовательности ссылки на нее невозможны.
Пример: Удаление последовательности S_DEPT_ID.

![]() |
Для закрепления материала можно выполнить Практическое задание 12 |
