В PSQL существует очень важный с точки зрения практического использования БД механизм порождения уникальных значений, которые могут применяться, например, для уникальной идентификации строк таблиц – генератор последовательности.
Генератор последовательности – это специальный объект БД для получения целочисленных значений, следующих с определенным шагом. В БД Firebird каждый генератор имеет уникальное имя и текущее значение. Для создания генератора используется следующий запрос:
CREATE { SEQUENCE| GENERATOR } имя_генератора;.
При выполнении такого запроса происходит два следующих действия:
- на специальной странице БД отводится 4 байта для хранения значения генератора;
- в системной таблице RDB$GENERATORS заводится запись, куда помещаются <имя_генератора> (поле RDB$GENERATOR_NAME), его номер (поле RDB$GENERATOR_ID) и признак того, что генератор создан пользователем (значение в поле RDB$SYSTEM_FLAG равно нулю).
Следует отметить, что по стандарту SQL для обозначения генератора последовательности используется синтаксический термин SEQUENCE, в то время как GENERATOR – это синтаксический термин InterBase. Для соответствия SQL-стандарту для работы с генераторами последовательностей рекомендуется использовать именно термин SEQUENCE.
По умолчанию генератор создается с текущим значением ноль. Для установки определенного (текущего) значения генератора <целое_значение> можно использовать команду следующего формата:
SET GENERATOR <имя_генератора> TO <целое_значение>;.
Однако для соответствия SQL-стандарту предпочтительнее использование следующего запроса:
ALTER SEQUENCE имя_генератора RESTART WITHцелое_значение;.
предыдущаяследующая