Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
1.12 Mб
Скачать

Тема 11: Создание, изменение и удаление последовательностей.

  1. Последовательность. Создание последовательности.

  2. Изменение и удаление последовательности.

  3. Генерация значений последовательности.

1. Последовательность. Создание последовательности.

Последовательность – это объект базы данных, который создается одним пользователем, но может совместно использоваться несколькими пользователями.

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

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

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

[INCREMENT BY n]

[START WITH n]

[MAXVALUE n | NOMAXVALUE]

[MINVALUE n | NOMINVALUE]

[CYCLE | NOCYCLE];

где

INCREMENT BY n - интервал между двумя последовательными номерами;

n является целым числом. Если это предложение опущено, приращение при генерации чисел равно 1.

START WITH n - первое генерируемое число в последовательности. Если это предложение опущено, последовательность начинается с 1.

MAXVALUE n - максимальное значение, которое может генерировать последовательность.

NOMAXVALUE - максимальное значение по умолчанию, равное 1027.

MINVALUE n - минимальное значение последовательности.

NOMINVALUE - задает минимальное значение, равное 1.

CYCLE | NOCYCLE - продолжается ли циклическая генерация чисел после достижения максимального или минимального значения.

Подчеркнутые параметры используются по умолчанию.

Пример 1. Создать последовательность kod_podraz_pos для первичного ключа таблицы. Параметр CYCLE использоваться не должен.

CREATE SEQUENCE kod_podraz_pos

INCREMENT BY 1

START WITH 1

MAXVALUE 10

NOCYCLE;

Проверка параметров последовательности.

Проверить значения параметров последовательности можно в таблице USER_SEQUENCES словаря данных:

SELECT sequence_name, min_value, max_value, increment_by

FROM user_sequences;

Чтобы вывести список всех существующих последовательностей нужно создать запрос:

SELECT seguense_name

FROM user_sequences;

2. Изменение и удаление последовательности.

Изменение шага приращения, максимального и минимального значений, режима циклической генерации значений и кэширования определяется командой ALTER SEQUENCE.

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

[INCREMENT BY n]

[START WITH n]

[MAXVALUE n | NOMAXVALUE]

[MINVALUE n | NOMINVALUE]

[CYCLE | NOCYCLE];

Для изменения параметров необходимо быть владельцем последовательности или иметь для нее привилегию ALTER. Команда влияет только на числа, генерируемые после изменения. Чтобы начать генерацию с другого числа, необходимо удалить последовательность и создать заново.

Удаление последовательности из словаря данных производится с помощью команды

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

После удаления последовательности ссылки на нее невозможны.

Пример 2: Удаление последовательности Kod_Podraz_pos.

DROP SEQUENCE Kod_Podraz_pos;

3. Генерация значений последовательности.

Псевдостолбец NEXTVAL генерирует следующее свободное число в последовательности. При каждой ссылке на этот столбец он возвращает уникальное значение.

Псевдостолбец CURRVAL выдает текущее число в последовательности. Чтобы CURRVAL содержал значение, необходимо сначала сгенерировать значение последовательности, используя NEXTVAL.

Пример 3: Включение нового отдела под названием "ИТО" в регионе 2. (При этом существует последовательность Kod_otdel_pos для таблицы EMP)

INSERT INTO EMP (kod_otdel, name_otdel, id_region)

VALUES (Kod_otdel_pos.NEXTVAL, ‘ИТО’,2);

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

SELECT Kod_otdel_pos.CURRVAL

FROM SYS.dual;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]