Страница 1 из 1

Как получить ID добавленой записи?

Добавлено: 18 авг 2006, 20:09
keymaster
Реально ли это в IB/FB?

В записи есть поле ID-автоинкремент.
Как можно узнать значение ID у только что вставленной записи?

Добавлено: 18 авг 2006, 21:09
Merlin
http://www.ibase.ru/devinfo/generator.htm

Там ещё много чего полезного рядушком.

Re: Как получить ID добавленой записи?

Добавлено: 21 авг 2006, 10:40
pastor
keymaster писал(а):Реально ли это в IB/FB?

В записи есть поле ID-автоинкремент.
Как можно узнать значение ID у только что вставленной записи?

Код: Выделить всё

INSERT INTO T1 (F1, F2)
       VALUES (:F1, :F2)
       RETURNING F1, F2 INTO :V1, :V2;
Firebird\doc\sql.extensions\README.returning.txt

Добавлено: 21 авг 2006, 10:45
WildSery
2 pastor:
Прежде чем такое советовать, необходимо узнать, какой у него FB, и в процедуре ли он хочет получать значения.

Добавлено: 21 авг 2006, 14:41
pastor
WildSery писал(а):2 pastor:
Прежде чем такое советовать, необходимо узнать, какой у него FB, и в процедуре ли он хочет получать значения.
прежде чем говорить за процедуры, прочитайте описание FIBP :)

Добавлено: 21 авг 2006, 15:00
CyberMax
2 WildSery . При чем тут процедуры? Мной returning используется в обыкновенных запросах, чтобы избежать лишнего обращения к генератору датасетом.

2 pastor. Больше информативности в постах. Что написано в описании FIB+, что не указано в статье про генераторы (даже косвенно)?

Добавлено: 21 авг 2006, 15:08
WildSery
pastor писал(а):прежде чем говорить за процедуры, прочитайте описание FIBP :)
Готов почитать. А где конкретно? FIBP - это FIBPlus?

Добавлено: 21 авг 2006, 15:41
pastor
WildSery писал(а):Готов почитать. А где конкретно? FIBP - это FIBPlus?
да
pastor писал(а):Firebird\doc\sql.extensions\README.returning.txt
и поддержку этого фибами, в доке по фибам (сам давно читаю только WhatNew)

Добавлено: 21 авг 2006, 17:43
CyberMax
2 Pastor. При чем здесь FIB+ и поддержка им returning? Прошу второй раз дать исчерпывающий ответ, а не ссылку на ссылку на доку :).

Re: Как получить ID добавленой записи?

Добавлено: 22 авг 2006, 20:19
Фанис
keymaster писал(а):Реально ли это в IB/FB?

В записи есть поле ID-автоинкремент.
Как можно узнать значение ID у только что вставленной записи?
В IBX в Query есть поле GeneratorField - определи необходимый плюс пропиши ApplyEvent->On new record. Сие дернет gen_id и пропишет id в поле. И все. Хотя тема генератора уже потихоньку достает :-)))

Добавлено: 23 авг 2006, 13:43
CyberMax
2 kdv. Дмитрий, в статье про генераторы тема установки ID через датасет почти не раскрыта. Плюс ошибка: в IBX используется GeneratorField, а в FIB+ AutoUpdateOptions, в котором уже GeneratorName.
P.S. Статье через три дня год исполняется с момента переписки :).

Добавлено: 23 авг 2006, 13:49
kdv
исправил на
"Такой же способ используется в компонентах IBX и FIBPlus - у IBDataSet есть метод GeneratorField, который позволяет обеспечить автоматическое присвоение нового номера столбцу первичного ключа записи как раз при помощи указанного оператора select, выполняемого библиотекой компонент "прозрачно". В FIBPlus та же самая функциональность устанавливается при помощи FIBDataSet.AutoUpdateOptions (GeneratorName)."