Это ряд чисел, в котором каждое последующие число больше предыдущего. Из этого следует, что каждое число в последовательности встречается всего один раз. Следовательно, последовательности очень хорошо подходят для генерации первичных ключей для идентификации объектов в нутри Базы данных.
В 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;
/
Ссылки по теме