Инструменты пользователя

Инструменты сайта


sequence

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
sequence [2009/04/28 18:11]
german
sequence [2009/05/04 18:32] (текущий)
Строка 1: Строка 1:
 +====== GENERATOR\SEQUENCE ======
 +===== Что такое генератор?​ =====
 +Думайте о генераторе,​ как о «потокобезопасном» («thread-safe») целочисленном счетчике,​ который расположен внутри базы данных Firebird. Вы можете создать его, задав имя:
 +<code sql>
 +CREATE GENERATOR GenTest;
 +</​code>​
 +
 +Затем вы можете получать его текущее значение,​ увеличивать его или уменьшать точно так же, как и переменную «var i: integer» в Delphi, однако не всегда можно просто установить определенное значение,​ а затем получить то же самое значение,​ как вы ожидаете,​ - генератор находится внутри базы данных,​ но вне механизма управления транзакциями. ​
 +
 +===== Что такое последовательность (sequence)? =====
 +
 +«Последовательность» («sequence») - это официальный термин SQL для обозначения того, что в СУБД Firebird называется генератором. Поскольку СУБД Firebird постоянно стремиться к большему соответствию стандарту SQL, то в СУБД Firebird 2 и более поздних версиях ключевое слово SEQUENCE может быть использован как синоним GENERATOR. Фактически,​ рекомендуется использовать синтаксис SEQUENCE во вновь создаваемом коде.
 +
 +Хотя слово «последовательность» подразумевает серию генерируемых значений,​ в то время как «генератор» подразумевает прямую ссылку на фабрику по производству значений,​ в СУБД Firebird //нет никаких различий//​ между генератором и последовательностью. Просто это два названия для одного и того же объекта базы данных. Вы можете создавать генератор и получать доступ к нему с помощью синтаксиса последовательности,​ и наоборот.
 +
 +Вот предпочтительный синтаксис для создания генератора/​последовательности в СУБД Firebird 2:
 +<code sql>
 +CREATE SEQUENCE SeqTest;
 +</​code>​
 +
 +===== Где хранятся генераторы?​ =====
 +
 +//​Декларации//​ генераторов хранятся в системной таблице [[RDB$GENERATORS]]. Однако,​ их //​значения//​ хранятся на специальных зарезервированных страницах внутри базы данных. Вы никогда не получите доступ к этим значениям напрямую. Вы можете получить к ним доступ с помощью специальных встроенных функций,​ которые будут обсуждаться далее в этом руководстве. ​
 +
 +
 +
 +===== Описание =====
 +Генератор (generator),​ или последовательность (sequence) — это самый простой объект базы данных. Он позволяет хранить целые числа в очень широком диапазоне значений от –9,​223,​372,​036,​854,​775,​808 до +9,​223,​372,​036,​854,​775,​807. Под него отводится 8 байтов памяти. Это подходящее средство для формирования значений искусственных первичных ключей. Для каждого искусственного первичного ключа любой таблицы базы данных пользователем создается свой собственный генератор,​ с которым выполняются все действия по формированию значений этого первичного ключа.
 +
 +Важной особенностью генераторов является то, что работа с ними выполняется вне контекста какой-либо транзакции. Это означает,​ что при одновременном обращении к одному и тому же генератору разных конкурирующих транзакций никогда не возникнет конфликта блокировки,​ и каждый параллельный процесс получит уникальное новое числовое значение. Значение зависит от времени обращения к генератору. В принципе,​ генераторы могут использоваться и для получения последовательностей неповторяющихся целых чисел для любых других целей.
 +
 +
 +===== См. также =====
 +[[CREATE GENERATOR]],​ [[ALTER SEQUENCE]]
 +
 +===== Источник =====
 +http://​www.firebirdsql.org/​manual/​ru/​generatorguide-basics-ru.html
 +
  
sequence.txt · Последние изменения: 2009/05/04 18:32 (внешнее изменение)