Re: проблема с генератором (Firebird+IBX)
От: Пацак Россия  
Дата: 16.04.08 20:31
Оценка: +1
Здравствуйте, sax0n, Вы писали:

S>Где нужно бубном потрясти, чтобы не было такого?


Два вопроса:
1. Сколько строк в таблице table?
2. Что, все-таки возвращается — null или 0 (на всякий случай: это разные вещи).

Если строк — ни одной, а возвращается null, то это в общем-то нормальное поведение. Обычно для получения следующего значения генератора пользуются запросом к системной таблице rdb$database, в которой гарантированно хранится одна запись.
Типа такого:

select gen_id(generator_name, 1) from rdb$database;


PS Также хочу заметить, что собирать этот запрос из частей каждый раз, когда требуется следующее значение генератора — жуткий моветон, т.к. на его prepare времени, скорее всего, потратится на порядок больше, чем на исполнение и получение одного числа клиентом.
Ку...
проблема с генератором (Firebird+IBX)
От: sax0n Украина  
Дата: 16.04.08 20:00
Оценка:
Привет народ.
Исопльзую берд 2.0
и какой-то IBX (Ddelphi 7)
Возникает такая проблема: есть функция, которая через SQL-запрос генерирует новый ID
  tmpIBSQL.Close;
  tmpIBSQL.SQL.Clear;
  tmpIBSQL.SQL.Add('SELECT gen_id(GEN_'+table+'_ID, 1) from ' + table + ';');
  tmpIBSQL.Prepare;
  tmpIBSQL.ExecQuery;
  result := tmpIBSQL.FieldByName('GEN_ID').AsInteger;
  tmpIBSQL.Close;

В большенстве слчаев работает нормально. но если сбросить генератор некоторых таблиц (в 1 например), то функция возвращает всегда 0 (NULL).
даже если через IBExpress запрос послать, вохвращает НУЛЬ.
Где нужно бубном потрясти, чтобы не было такого?

Заранее спасибо
Re[2]: проблема с генератором (Firebird+IBX)
От: sax0n Украина  
Дата: 17.04.08 04:40
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Здравствуйте, sax0n, Вы писали:


S>>Где нужно бубном потрясти, чтобы не было такого?


П>Два вопроса:

П>1. Сколько строк в таблице table?
таблица пустая — обнулена
П>2. Что, все-таки возвращается — null или 0 (на всякий случай: это разные вещи).
судя по IBExpress запросу — null

П>Если строк — ни одной, а возвращается null, то это в общем-то нормальное поведение. Обычно для получения следующего значения генератора пользуются запросом к системной таблице rdb$database, в которой гарантированно хранится одна запись.

П>Типа такого:

П>
П>select gen_id(generator_name, 1) from rdb$database;
П>


П>PS Также хочу заметить, что собирать этот запрос из частей каждый раз, когда требуется следующее значение генератора — жуткий моветон, т.к. на его prepare времени, скорее всего, потратится на порядок больше, чем на исполнение и получение одного числа клиентом.


Как еще можно тогда записать ячейку в базу и при этом знать ее номер? Вариант с триггером в данном случае мне не подходит в виду того, что я так и не получаю номера ячейки.. Поэтому приходится жертвовать временем...
Re[3]: проблема с генератором (Firebird+IBX)
От: Alex.Che  
Дата: 17.04.08 09:06
Оценка:
Привет, sax0n!
Вы пишешь 17 апреля 2008:

s> Как еще можно тогда записать ячейку в базу и при этом знать ее номер?

s> Вариант с триггером в данном случае мне не подходит в виду
s> того, что я так и не получаю номера ячейки..

RTFM: GeneratorField (в справке по IBX)
и заодно, почитай статьи:
http://www.ibase.ru/devinfo/ibx.htm
http://www.ibase.ru/devinfo/generator.htm

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: проблема с генератором (Firebird+IBX)
От: ontro  
Дата: 14.02.09 17:26
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Привет, sax0n!

AC>Вы пишешь 17 апреля 2008:

s>> Как еще можно тогда записать ячейку в базу и при этом знать ее номер?

s>> Вариант с триггером в данном случае мне не подходит в виду
s>> того, что я так и не получаю номера ячейки..

AC>RTFM: GeneratorField (в справке по IBX)

AC>и заодно, почитай статьи:
AC>http://www.ibase.ru/devinfo/ibx.htm
AC>http://www.ibase.ru/devinfo/generator.htm

AC>--

AC>With best regards, Alex Cherednichenko.

Кстати ссылки думаю будут позлезны многим....
С уважением Авдеев Антон — http://www.pronto-office.ru
Re[5]: проблема с генератором (Firebird+IBX)
От: Аноним  
Дата: 02.03.09 14:39
Оценка:
O>Кстати ссылки думаю будут позлезны многим....

Пожалуй =)
Re[6]: проблема с генератором (Firebird+IBX)
От: Аноним  
Дата: 02.03.09 14:44
Оценка:
Здравствуйте, Аноним, Вы писали:


O>>Кстати ссылки думаю будут позлезны многим....


А>Пожалуй =)
Re[7]: проблема с генератором (Firebird+IBX)
От: rebex  
Дата: 02.03.09 19:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:



O>>>Кстати ссылки думаю будут позлезны многим....


А>>Пожалуй =)


Что-то расплодилось вас анонимусов %)
С уважением Кременчов Влад — http://www.energoexpo.ru/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.