Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как достаь ключь после INSERT / 3 сообщений из 3, страница 1 из 1
26.06.2003, 07:12
    #32191839
Twinp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как достаь ключь после INSERT
В MSSQL там есть @@INDENTITY которая возаращает значение поля счётчика после операции INSERT.
Как в interbase это сделать для поля на которое установлен генератор.
С учётом конечно что это не последнее значение генератора, а то значение,т.е. той сесии в которой выполнен INSERT/
НУ в смысле чтобы не получилось что кто то ещё успел сделать инсерт и я получу уже не то значение.
...
Рейтинг: 0 / 0
26.06.2003, 09:27
    #32191899
_DmG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как достаь ключь после INSERT
Для обращения к генератору используется функция GEN_ID(<имя генератора>, <шаг приращения>). Пока Вы делаете INSERT в рамках текущей транзакции, к генератору никто обратиться (изменить) не может,тем самым гарантируется иникальность значений.
Чтобы вернуть в приложение значение генератора, использую хранимую процедуру, в которой выходному параметру присваиваю значение функции GEN_ID, этот же параметр используется в INSERT. Пользователям запрещаю INSERT, но разрешаю выполнять хранимую процедуру. Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE PROCEDURE IN_ADD (
  IN_DATA DATE,
  IN_SUMMA NUMERIC( 15 ,  2 ),
  IN_REMARK VARCHAR( 200 ),
  IN_PRED INTEGER,
  IN_MONTH_ SMALLINT,
  IN_IS_SB CHAR( 1 ),
  IN_KOD_SB INTEGER
) RETURNS (
  KOD_IN_ INTEGER
) AS        
DECLARE VARIABLE mKod INTEGER;
BEGIN
	mKod=GEN_ID(GEN_IN_, 1 );
	INSERT INTO IN_ (KOD, DATA, SUMMA, REMARK, PRED, Month_, IS_SB, Kod_SB)
	VALUES (:mKod, :IN_DATA, :IN_SUMMA, :IN_REMARK, :IN_PRED, :IN_Month_, :IN_IS_SB, :IN_Kod_SB);
	Kod_IN_=:mKod;
	SUSPEND;
END


PS: Переменная mKod в этом примере лишняя... Используй сразу параметр Kod_IN_.
...
Рейтинг: 0 / 0
26.06.2003, 09:32
    #32191905
Twinp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как достаь ключь после INSERT
сенькс
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как достаь ключь после INSERT / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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