Числовые последовательности в Oracle

Источник: oracle

Это ряд чисел, в котором каждое последующие число больше предыдущего. Из этого следует, что каждое число в последовательности встречается всего один раз. Следовательно, последовательности очень хорошо подходят для генерации первичных ключей для идентификации объектов в нутри Базы данных.

В Oracle последовательности представлены в виде отдельных сущностей базы данных. Для последовательности следующие параметры имеют важные значения:

1) Начальное значение последовательности

2) Шаг последовательности

3) Минимальное значение последовательности

Так же для последовательности можно задать циклична она или нет. Если последовательность циклична, то достигнув максимального значения последовательности она перейдет к начальному значению последовательности. В случае если последовательность не циклична и достигла своего конца, то будет сгенерирована ошибка (ORA-08004).

Техническая часть

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

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

CREATE SEQUENCE -- говорим что хотим создать последовательность
 S_SAMPLE -- с именем S_SAMPLE
 START WITH 0 -- начинаться последовательность будет с нуля
 INCREMENT BY 1 -- шаг последовательности, это значит что следующие значение 
                -- последовательности на 1 будет больше предыдущего
 MINVALUE 0 -- минимальное значение последовательности

Если необходимо задать оба предела: максимальное значение последовательности и минимальное значение последовательности, то при создании можно указать максимальное значение последовательности: MAXVALUE. Для того, что бы указать циклична ли последовательность можно при создании указать флаг CYCLE.

Пример создания цикличной последовательности, с прямым заданием максимального значения последовательности:

CREATE SEQUENCE 
 S_TEST2 
 START WITH 0 
 INCREMENT BY 1 
 MINVALUE 0 
 MAXVALUE 400 -- максимальное значение последовательности 
 CYCLE -- Это обозначает, что последовательность циклична 
 Изменение параметров последовательности в Oracle:

Что бы изменить параметры последовательности, существует следующие предложение: ALTER SEQUENCE имя последовательности. В данном предложении можно использовать все те же составляющие что и в предложении CREATE SEQUENCE. Только при помощи данного предложения нельзя изменить текущие значение последовательности. Для того, что бы это сделать необходимо удалить последовательность и создать новую с заданным именем и заданным значение последовательности указанной в части в START WITH. Пример изменения параметров последовательности:

ALTER SEQUENCE - изменяем последовательность 
 S_TEST  -- с именем S_TEST
 INCREMENT BY 1 -- устанавливаем шаг последовательности в 1
 MINVALUE 2 - задаем минимальное и максимальное значение последовательности
 MAXVALUE 4

Удаление последовательности: Для удаления последовательности есть предложение: DROP SEQUENCE имя последовательности

Пример:

DROP SEQUENCE S_TEST2

Пример использования последовательности для генерации первичного ключа:

CREATE OR REPLACE TRIGGER MY_TABLE_B_I_R --название триггера
BEFORE
 INSERT
ON MY_TABLE --название таблицы
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
   --id - первичный ключ
   --MY_TABLE_SQ - название последовательности
   select MY_TABLE_SQ.nextval into :new.id from dual;
end;
/

Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=22982