![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет всем!
СУБД FB2.5 , Delphi 2010 Использую компоненту TpFIBQuery в ней такой SQL: INSERT INTO myTable (field1,field2) VALUES (val1,val2) RETURNING id Мой вопрос - как мне забрать это значение (id) с компоненты pFIBQuery ? Есть тут знатоки FIBPlus ? |
|
#2
|
||||
|
||||
|
Нашёл вот что:
Цитата:
т.е после запроса в датасете последняя запись будет с новым значением генератора. Возможно придётся использовать TpFIBВDataSet, хотя TpFIBQuery тоже должен возвращать записи. Кстати обещанного примера с Returning Devrace так и не выложили на сайте, так что за ваш результат методом тыка буду очень вам признателен Последний раз редактировалось Viajero, 12.08.2011 в 11:16. |
|
#3
|
|||
|
|||
|
У меня ситуация немного другая....
Я qFIBQuery делаю запрос INSRET который дублирует текущую запись, потом мне надо спозиционировать Grid на неё... Вот для этого мне и хотелось получить ID с моего qFIBQuery запроса. В данный момент я после выполнения этого запроса делаю ещё один у же с qFIBDataSet (select MAX(sn.id) max_id from spr_nomenkl sn) Ну и беру нужный мне ID уже с него... |
|
#4
|
||||
|
||||
|
А что мешает делать INSERT с этого же датасета. FIBLUS жe позволяет вставлять INSERT отдельно от SELECT, надо только опцию автогенерации запроса убрать ".AutoRewriteSQLs=false". Можно даже отдельную транзакцию на write делать (всё кроме SELECT). И IMHO дополнительный SELECT делать не нужно.
Последний раз редактировалось Viajero, 12.08.2011 в 14:57. |
|
#5
|
|||
|
|||
|
Цитата:
Т.е. откуда мне это значение снять? |
|
#6
|
||||
|
||||
|
Ну так смотри первый мой пост
Цитата:
Практически я это не использовал пока поэтому 100% уверенности нет что оно работает, но судя по объяснениям DEVRACE должно быть именно так. Последний раз редактировалось Viajero, 12.08.2011 в 18:53. |