Числовые последовательности в 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; / |