FirebirdSQL logo
 FILTEREXCEPTION 

Последовательность (sequence) или генератор (generator) — объект базы данных, предназначенный для получения уникального числового значения.Термин последовательность является SQL совместимым.Ранее в Interbase и Firebird последовательности называли генераторами.

Независимо от диалекта базы данных последовательности (или генераторы) всегда хранятся как 64-битные целые значения.

Caution

Если клиент использует 1 диалект, то сервер передаёт ему значения последовательности, усечённые до 32-битного значения.Если значение последовательности передаются в 32-разрядное поле или переменную, то до тех пор, пока текущее значение последовательности не вышло за границы для 32-битного числа, ошибок не будет.В момент выхода значения последовательности за этот диапазон база данных 3-го диалекта выдаст сообщение об ошибке, а база данных 1-ого диалекта будет молча обрезать значения, что также может привести к ошибке — например, если поле, заполняемое генератором, является первичным или уникальным.

В данном разделе описываются вопросы создания, модификации (установка значения последовательности) и удаления последовательностей.

CREATE SEQUENCE

Назначение

Создание новой последовательности (генератора).

Доступно в

DSQL, ESQL

Синтаксис
CREATE {SEQUENCE | GENERATOR} seq_name
[START WITH start_value] [INCREMENT [BY] increment]
Table 1. Параметры оператора CREATE SEQUENCE
Параметр Описание

seq_name

Имя последовательности (генератора). Может содержать до 63 символов.

start_value

Начальное значение последовательности (генератора).По умолчанию равно 1.

increment

Шаг приращения.4 байтовое целое число.По умолчанию равно 1.

Оператор CREATE SEQUENCE создаёт новую последовательность.Слова SEQUENCE и GENERATOR являются синонимами.Вы можете использовать любое из них, но рекомендуется использовать SEQUENCE.

В момент создания последовательности ей устанавливается значение, указанное в необязательном предложении START WITH минус значение приращения указанное в предложении INCREMENT [BY].Если предложение STARTING WITH отсутствует, то последовательности устанавливается значение равное 1.Таким образом, если начальное значение последовательности равно 100, а приращение 10, то первое значение выданное оператором NEXT VALUE FOR будет равно 100.

Note

До Firebird 4.0, первое значение выданное оператором NEXT VALUE FOR было равно 110.

Необязательное предложение INCREMENT [BY] позволяет задать шаг приращения для оператора NEXT VALUES FOR.По умолчанию шаг приращения равен единице.Приращение не может быть установлено в ноль для пользовательских последовательностей.Значение последовательности изменяется также при обращении к функции GEN_ID, где в качестве параметра указывается имя последовательности и значение приращения, которое может быть отлично от указанного в предложении INCREMENT BY.