powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вернуть значение поля после инсерта
5 сообщений из 5, страница 1 из 1
Вернуть значение поля после инсерта
    #32245547
Имеется довольно приличная по количеству записей таблица, назовем ее MYTABLE. Добавляю в нее очередную запись, ну хотя бы так:

Код: plaintext
1.
INSERT INTO MYTABLE (MTB_DATE, MTB_NAME)
VALUES (:Today, :Name) 

Поле MTB_ID автогенериться при помощи связки триггер+генератор.

Так вот, очень хочется после добавления записи узнать значение, попавшее в MTB_ID.
Как его можно выцепить?
...
Рейтинг: 0 / 0
Вернуть значение поля после инсерта
    #32245548
Если мне не изменяет память на ORACLE это делается так:

Код: plaintext
INSERT bla-bla-bla RETURN ...
...
Рейтинг: 0 / 0
Вернуть значение поля после инсерта
    #32245550
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в иб/фб это делается иначе...
имхо, довольно геморно...

в триггере делаешь не
new.key_id=gen_id(gen_name,1);

a

if (new.key_id is null) then
new.key_id=gen_id(gen_name,1);

а на клиенте делаешь сначала
select gen_id(gen_name) from RDB$DATABASE

полученное значение инсеритшь вместе с остальными полями в таблицу....
...
Рейтинг: 0 / 0
Вернуть значение поля после инсерта
    #32246340
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема очень актуальна. При работе например с Oracle через DOA ид для последней вставленной записи хранится в датасэте. Я использую FibPlus. Если кто знает, где плюсы хранят это занчение, то буду очень признателен за инф.
...
Рейтинг: 0 / 0
Вернуть значение поля после инсерта
    #32247526
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, собственно, плюсы именно эту проблему решают просто.
В DataSet необходимо настроить AutoApdateOptions (GeneratorName - собственно имя генератора, KeyField - первичный ключ, WhenGetGenID - wgBeforePost).
При DataSet.Insert добавится пустая строка в датасэт, а в поле с первичным ключем - значение из генератора. Поскольку по умолч. при инсерте указатель будет именно на этой записи, значит новый ид можно брать прямо из датасэта.
ЗЫ: при использовании триггера не забыть поставить проверку на вставку нула в PK.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вернуть значение поля после инсерта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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