Форум: "Начинающим";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизПроблема с генератором Найти похожие ветки
← →
Fidel (2005-10-04 17:42) [0]У меня возникла следующая проблема c генераторами.
Обрисовываю ситуацию:
В приложении имеются два ДатаМодуля DM1, DM2. В первом подключаемся к одной базе данных FIBDatabase1, во втором к другой базе данных FIBDatabase2 (использую компоненты FIBPlus 5.2).
В первом ДатаМодуле есть компонент FIBQuery с запросом из одной таблицы первой базы данных (выбираются скажем все поля).
Привожу немного сокращенный код:
1. DM1.FIBQuery.ExecQuery;
2. while not DM1.FIBQuery.Eof do
3. begin
4. DM2.FIBDatabase1.Gen_ID("GENERATOR1",1);
5. DM1.FIBQuery.Next;
6. end;
Так вот проблема в том, что вызов генератора в строке 4 подвисает, число генерируется, но проходит секунд 30, причем при новом запуске цикла на разных шагах цикла, т.е не на одном и том же месте, а всегда по разному. За весь цикл таких зависаний может быть несколько. В чем проблема не пойму?
Фишка в том, что если использовать цикл по какой нибудь циклической переменной, не перебирая записи DM1.FIBQuery, все работает. В холостую (без 4 строки) цикл тоже работает. Вот так вот. Че за хрень не пойму. Сколько работал с методом Gen_Id таких ситуаций не было.
← →
Desdechado © (2005-10-04 17:52) [1]а что делает означенная конструкция?
← →
Johnmen © (2005-10-04 17:52) [2]Что за хрень - не знаю, но количество записей, которые мог бы возвратить запрос, пока ты по его набору данных бегаешь, МОЖЕТ ИЗМЕНИТЬСЯ !
И тогда - абзац. То, для чего ты ЭТО делал, работать не будет...:)
И к тому же, кто-то ещё может так же бегать и дёргать генератор........
← →
Fidel (2005-10-04 18:01) [3]
> количество записей, которые мог бы возвратить запрос, пока
> ты по его набору данных бегаешь, МОЖЕТ ИЗМЕНИТЬСЯ !
Количество записей не меняется.
Я написал, что привожу немного сокращенный код, но дело в том что, и этот приведенный сокращенный код работает так же как мной описано. Т.е. никаких дополнительных наворотов нет, ничего более нигде не делается ни на клиенте ни на сервере.
← →
Desdechado © (2005-10-04 18:06) [4]генератор - объект транзакционно-независимый
но вопрос со смыслом операций - открыт
что это должно делать?
← →
Fidel (2005-10-04 18:14) [5]
> генератор - объект транзакционно-независимый
В том то и дело что транзакционно-независимый, однако складывается ощущение каой-то непонятной связи между двумя базами, хотя ее абсолютно нет.
> что это должно делать?
Я думаю что это не важно. Это можно сделать и другим способом, но важен сам факт, того что приведенный код ведет себя очень странно.
А в общем все просто - на основе данных из таблицы из первой базы данных, формируются данные для другой таблицы во второй базе данных, ну и соответственно туда добовляются, а генератор генерирует значение
← →
Fidel (2005-10-04 18:15) [6]Я думаю что это не важно. Это можно сделать и другим способом, но важен сам факт, того что приведенный код ведет себя очень странно.
А в общем все просто - на основе данных из таблицы из первой базы данных, формируются данные для другой таблицы во второй базе данных, ну и соответственно туда добовляются, а генератор генерирует значение ключевого поля таблицы
← →
Desdechado © (2005-10-04 18:19) [7]а что, сложно назначать коды в триггере BEFORE INSERT?
← →
Fidel (2005-10-04 18:23) [8]А вот и еще одна фишка - невероятно но факт, так тоже не работает, вернее работает но с зависанием.
← →
Desdechado © (2005-10-04 18:31) [9]так работает или виснет?
может, сервер перегружен?
это разные сервера или разные БД на одном сервере?
версии серверов и клиента?
видимо, что-то химичишь и скрываешь за словами "не важно"
а догадываться, что ты недоговорил, не интересно
← →
Fidel (2005-10-04 18:35) [10]Не серьезно ничего не химичу.
Я же писал генератор генерирует следующее число, но с эффектом зависания, т.е. через определенное время.
Базы висят на одним сервере. Сервер FB1.5
Сервер не перегружен т.к. никто с базам не работает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c