Генераторы

  • Часть 1
  • | 2
  • | 3
  • | 4

В 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целое_значение;.

предыдущаяследующая