powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хитрая задачка с генераторами ;) Срочно! ;)
5 сообщений из 5, страница 1 из 1
Хитрая задачка с генераторами ;) Срочно! ;)
    #32128868
mad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Проблема следующая

1. Создается база на FB
2. Создаются необходимые таблицы скриптом
3. Закачиваются данные в эти таблицы из MySQL

тут интересный момент: с мускуле есть такая штука, как автоинкримент ;). У каждой таблицы в мускульной базе есть поле fkey, которое является автоинкриментарным. необходимо при перекачке сохранить значение этого поля в каждой таблице. ОК. закачиваем, все нормально.

4. требуется дальше работать с таблицами уже на FB.

тут тоже интересный момент: требуется чтобы поддерживался автоинкримент на полях fkey в каждой таблице в FB. ок. Создаем для каждой таблицы генератор в скрипте. Выполняем. Есть. Созданы генераторы для каждой таблицы. Но стартовые занчения у них естественно равны 0.

5. Требуется установить значения генераторов для каждой таблицы равными максимальному значению поля fkey.

интересный момент: на FB я пересел недавно (вчера ;)) ), поэтому думаю: "да легко, сейчас я ХП налабаю с именем таблицы в качестве параметра. И для какждой таблицы в скрипте выполню." Ага, разбежался... Динамический SQL не поддерживается, оказывается.

Ваши предложения?

Я еще хотел чего-нибудь типа этого (в ErWin 4):

SET GENERATOR %TableName TO (SELECT MAX(fkey) FROM %TableName)

:) не прошло. Вот сижу и расстраиваюсь.
Одно решение вижу пока. Приблуду внешнюю написать, которая все это сделает через ODBC или еще как-нибудь.

Спасибо.
...
Рейтинг: 0 / 0
Хитрая задачка с генераторами ;) Срочно! ;)
    #32128897
srf2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ручками придется делать
...
Рейтинг: 0 / 0
Хитрая задачка с генераторами ;) Срочно! ;)
    #32128900
mad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдя... либо ручками несколько сотен генераторов устанавливать, либо приблуду писать...

Склоняюсь ко второму варианту ;)
...
Рейтинг: 0 / 0
Хитрая задачка с генераторами ;) Срочно! ;)
    #32128938
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет!

можно попробовать и другой вариант. например, изпользуя словарь данных, сгенерить комнады SET GENERATOR

выполнеешь этот селект:
Код: plaintext
1.
2.
3.
select 'select cast(''set generator '||rdb$relation_name||' to ''||(select max(fkey) from '||
rdb$relation_name||')'||' ||'';'' as varchar(1000)) from rdb$relations where rdb$system_flag = 0 union'
from rdb$relations where rdb$system_flag =  0 ;


он тебе возвращет, что-то типа:
Код: plaintext
1.
2.
3.
4.
F_1
select cast('set generator T1                              to '||(select max(fkey) from T1                             ) ||';' as varchar( 1000 )) from rdb$relations where rdb$system_flag =  0  union
select cast('set generator T2                              to '||(select max(fkey) from T2                             ) ||';' as varchar( 1000 )) from rdb$relations where rdb$system_flag =  0  union
select cast('set generator T3                              to '||(select max(fkey) from T3                             ) ||';' as varchar( 1000 )) from rdb$relations where rdb$system_flag =  0  union


копируешь все это в файл или клиппорд, удаляешь последний UNION и выполняешь. в результате получаешь:
Код: plaintext
1.
2.
3.
4.
F_1
set generator T1                              to  2 ;
set generator T2                              to  12123 ;
set generator T3                              to  1212 ;


и все, остается только выполнить
...
Рейтинг: 0 / 0
Хитрая задачка с генераторами ;) Срочно! ;)
    #32128945
mad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гениально, пробуем ;)

Спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хитрая задачка с генераторами ;) Срочно! ;)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]