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

advertisement
ПОСЛЕДОВАТЕЛЬНОСТИ
Что такое
последовательность?
• Автоматически генерирует уникальные числа
• Является совместно используемым объектом
• Обычно применяется для получения значений
первичного ключа
• Заменяет код в прикладной программе
• Ускоряет доступ к числам последовательности, если
они находятся в сверхоперативной памяти (кэшпамяти)
Создание последовательности:
синтаксис
Определение последовательности для
автоматической генерации чисел.
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
Создание последовательности:
пример
•
•
Создать последовательность S_DEPT_ID для
первичного ключа таблицы S_DEPT
Параметр CYCLE использоваться не должен
SQL> CREATE SEQUENCE s_dept_id
2 INCREMENT BY 1
3 START WITH 51
4 MAXVALUE 9999999
5 NOCACHE
6 NOCYCLE;
Sequence created.
Проверка параметров
последовательности
• Проверить значения параметров последовательности
можно в таблице USER_SEQUENCES словаря данных .
SQL> SELECT sequence_name, min_value,
2 max_value, increment_by,
3 last_number
4 FROM user_sequences;
• Столбец LAST_NUMBER содержит следующее
свободное число
Псевдостолбцы NEXTVAL
и CURRVAL
• NEXTVAL возвращает следующее свободное число в
последовательности
- При каждой ссылке на этот столбец он возвращает
уникальное значение - даже для разных
пользователей
• CURRVAL выдает последнее число в
последовательности, выбранное текущим
пользователем
- Чтобы CURRVAL содержал значение, необходимо
прежде применить к этой последовательности
NEXTVAL
• Следуйте правилам использования
Использование
последовательности
примеры
• Включение нового отдела под названием "Finance" в
регионе 2
SQL> INSERT INTO s_dept (id, name, region_id)
2 VALUES (S_dept_id.NEXTVAL,
3 'Finance’, 2);
1 row created.
• Просмотр текущего значения последовательности
S_DEPT ID
SQL> SELECT s_dept_id.CURRVAL
FROM
SYS.dual;
Использование
последовательности
• Запись значений последовательностей в
сверхоперативную память (кэш) ускоряет доступ к ним
• Возможные причины пропусков значений в
последовательности:
- Откат транзакции
- Отказ системы
- Использование последовательности в другой
таблице
• Если последовательность создана с параметром
NOCACHE, увидеть следующее свободное число в ней
можно в таблице USER_SEQUENCES
Изменение последовательности:
синтаксис
Изменение шага приращения, максимального и
минимального значений, режима циклической
генерации значений и кеширования
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
Изменение
последовательности:
указания
•
•
•
•
Для изменения параметров необходимо быть владельцем
последовательности или иметь для нее привилегию ALTER
Команда влияет только на числа, генерируемые после
изменения
Выполняются некоторые проверки
Чтобы начать последовательность с другого числа,
необходимо удалить ее из словаря данных и создать заново
Удаление
последовательности
• Удаление последовательности из словаря данных
производится с помощью команды DROP SEQUENCE
• После удаления последовательности ссылки на нее
невозможны
SQL> DROP SEQUENCE s_dept_id;
Sequence dropped.
Заключение
• Для автоматической генерации чисел используется
генератор последовательностей
• Как объект базы данных, последовательность
может использоваться совместно несколькими
пользователями
• Информацию о последовательностях можно
получить в таблице USER_SEQUENCES
• Извлечь следующее свободное число в
последовательности можно с помощью ссылки
«последовательность.NEXTVAL»
• Извлечь текущее число в последовательности
можно с помощью ссылки
«последовательность.CURRVAL»
Download