Для автоматической генерации номеров строк в таблице можно использовать такой объект базы данных, как последовательность. Последовательность – это объект базы данных, который создается одним пользователем, но может совместно использоваться несколькими пользователями. Основное назначение последовательности - автоматическая генерация уникальных чисел, которые обычно применяются для получения значений первичного ключа.
Создание последовательности.
Синтаксис:
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 |