powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Dublicate generator values inside procedure
7 сообщений из 7, страница 1 из 1
Dublicate generator values inside procedure
    #38604537
FBGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть процедура
For select .....
do begin
Select GEN_ID(GEN, 1) from RDB$DATABASE INTO :GEN1;
insert into tbl GEN values (::GEN1);
Select GEN_ID(GEN, 1) from RDB$DATABASE INTO :GEN2;
insert into tbl GEN values (::GEN2);
end

При выполнении процедуры получаем эксепшн "Duplicated GEN current record"
куда копать?
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604551
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FBGuest,

зачем писать это,
Select GEN_ID(GEN, 1) from RDB$DATABASE INTO :GEN1;
если можно
gen1=gen_id(gen, 1);
http://www.ibase.ru/devinfo/generator.htm

FBGuestполучаем эксепшн "Duplicated GEN current record"
это какой то ваш exception, в каком-ниьбудь триггере, который, возможно, положил болт на ваши значения, передаваемые в insert.
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604626
FBGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присвоение действительно разумнее так писать.
Эксепшн действильно местный. Проверяет уникальность этого ключа.
Так же в отладчике процедуры видно что генерятся "старые" значения. Хотя если выполнить генерацию этого ключа на чистом sql, то значения отображаются верные.
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604643
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FBGuest,

раньше можно было удалить генератор, и пересоздать его, при этом в процедуре, использующей генератор, продолжают генерироваться старые номера, а из sql или в новой процедуре новый генератор будет выдавать другие номера.
Так что, после удаления-создания генератор, процедуры и триггеры, его использующие, нужно заальтерить, т.е. перекомпилировать.
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604653
FBGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не удалялось/пересоздавалось. Просто create procedure.
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604674
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FBGuestНичего не удалялось/пересоздавалось. Просто create procedure.
не верю. еще раз - при компиляции процедуры создается blr, и дальше используется только он. если генератор не трогали, то и процедура и sql будут выдавать те же gen_id для этого генератора.
Перекомпилируйте процедуру.
...
Рейтинг: 0 / 0
Dublicate generator values inside procedure
    #38604687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FBGuestЕсть процедура
Есть процедура - показывай. Тот кусок, что ты привёл просто не скомпилируется.

Ставлю на то, что ты во втором insert написал тот же gen1.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Dublicate generator values inside procedure
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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