crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в PostgreSQL, что такое Последовательности?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Disaron Дата 16.3.2011, 12:42
 
Цитата(Litkevich Yuriy @ 13.3.2011, 15:04) *
ковырялся в PGAdmin, переведённом, увидел там в дереве пункт - "Последовательности".

Т.к. с PostgreSQL дел не имел, а только с Firebird, поясните на пальцах, что такое последовательности? Это не тоже что и генераторы в Firebird?

На пальцах это контейнер с регулируемым автоинкрементом.
Можно использовать, например, для ключевого поля в таком синтаксисе:
CREATE TABLE tbl (
id_tbl integer DEFAULT nextval('sq_id_tbl'::regclass)
)

где sq_id_tbl собственно сама последовательность. Счетчик назад не откатывается, при удалении элемента таблицы, хотя вручную откатить можно без проблем - правкой секваенса.
Litkevich Yuriy Дата 15.3.2011, 17:36
 
Цитата(Sergey B. @ 15.3.2011, 15:31) *
Генератор в FB - это старший мастер ключ в таблице +1?
нет, но для таких целей обычно и используют

Для реализации автоинкрементного поля в FB используют связку Тригер+Генератор.

В тригере пишут примерно такой код:
SET TERM ^;
ALTER TRIGGER T_BLOBS_ID ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
    IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_BLOBS, 1);
END^
SET TERM; ^
где:
NEW.ID - новое значение поля ID
GEN_ID - вызов функции, которая получает у генератора GEN_BLOBS новое значение, посредством прибавления к нему "1".
Аналог этой строчки на Си:
ID = ++GEN_BLOBS;


Т.е. GEN_BLOBS по сути просто аналог статической переменной в Cи/Cи++.
Особенность её - она живёт вне транзакций. Т.е. если транзакцию откатить, то генератор не вернётся в прежнее состояние, это необходимо иначе начнётся каша.
Sergey B. Дата 15.3.2011, 13:31
 
Цитата(Litkevich Yuriy @ 13.3.2011, 15:04) *
ковырялся в PGAdmin, переведённом, увидел там в дереве пункт - "Последовательности".

Т.к. с PostgreSQL дел не имел, а только с Firebird, поясните на пальцах, что такое последовательности? Это не тоже что и генераторы в Firebird?


Генератор в FB - это старший мастер ключ в таблице +1?
Если да то оно.
Litkevich Yuriy Дата 13.3.2011, 15:04
  ковырялся в PGAdmin, переведённом, увидел там в дереве пункт - "Последовательности".

Т.к. с PostgreSQL дел не имел, а только с Firebird, поясните на пальцах, что такое последовательности? Это не тоже что и генераторы в Firebird?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 14:08