Свежесгенерированное значение генератора в триггере

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Свежесгенерированное значение генератора в триггере

Сообщение sdsfy » 20 апр 2011, 01:15

Коллеги, я конечно понимаю, что надежд не много, но всеж сохраняю их.
Триггер Before Insert вставляет в поле первичного ключа значение. Мне это значение надо знать без (до) переоткрытия таблицы. Сама запись идентифицируется только значением поля "автогенерируемого" первичного ключа. После переоткрытия наверно нет способов определить какой ID был у той записи (вариант визуального детектирования не катит).
Что приходит в голову первым делом: Перестать генерировать ID через триггер, а получать его в программе через Procedure, впихнуть его в поле, после переоткрытия я буду знать о как найти ту самую запись. Собственно вопрос, можно на момент генерации этого значения в триггере, в программу передать его?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Свежесгенерированное значение генератора в триггере

Сообщение Dimitry Sibiryakov » 20 апр 2011, 14:27

RTFM INSERT...RETURNING.

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Re: Свежесгенерированное значение генератора в триггере

Сообщение sdsfy » 20 апр 2011, 16:08

Спасибо, меня дезинформировало то, что в MySql можно было без returning получать значения автогенератора поля... Щас попробую:)

***
В IBExpert вернулось, а как бы вернуть в TIBDataset?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Свежесгенерированное значение генератора в триггере

Сообщение Dimitry Sibiryakov » 21 апр 2011, 14:39

Никак. IBX не поддерживает фичи Firebird, включая RETURNING.

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Re: Свежесгенерированное значение генератора в триггере

Сообщение sdsfy » 21 апр 2011, 15:05

Dimitry Sibiryakov писал(а):Никак. IBX не поддерживает фичи Firebird, включая RETURNING.
да я это уже понял... наверно надо будет FIBPlus. Но приложение уже построено на IBX.
Можно ли стыковать компоненты FIB и IBX? скажем TpFIBDataSet с TIBDatabase и TIBTransaction?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Свежесгенерированное значение генератора в триггере

Сообщение kdv » 22 апр 2011, 18:25

может, все-таки прочитать www.ibase.ru/devinfo/generator.htm ?
не вижу смысла убиваться из-за returning.

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Re: Свежесгенерированное значение генератора в триггере

Сообщение sdsfy » 22 апр 2011, 21:02

kdv писал(а):может, все-таки прочитать http://www.ibase.ru/devinfo/generator.htm ?
не вижу смысла убиваться из-за returning.
В общем, ранее читал этот материал, да и сейчас вновь прошелся по нему. В принципе, ничего радикально нового о генераторах (для моего, в частности, случая) не узнал. В общем пришел к мысли, что оптимально будет - вынести генерацию в приложение. Returning был бы изящным решением, если бы компонент поддерживал его...

Ответить