Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Делаю Insert в хранимой процедуре   Найти похожие ветки 

 
sergey32 ©   (2002-05-22 16:54) [0]

База Interbase, на поле id стоит генератор.
как мне получить id той записи, которая только что
была добавлена?
Можно получить ее не используя "Select Max(id)"


 
Fay ©   (2002-05-22 19:37) [1]

А так низя ?

set term ^;
create procedure sp_MyProc1(StrParam varchar(100))
returns (Row_ID integer)
as
begin
Row_ID = gen_id(MyGenerator1, 1);
insert into MyTable1(Row_ID, StrVal) values (:Row_ID, :StrVal);
end
^
set term ;^


 
sergey32 ©   (2002-05-23 11:09) [2]

Спасибо за совет!!! Я как-то не додумался.


 
Johnmen ©   (2002-05-23 11:27) [3]

...добавлю, что ..."Select Max(id)" - в принципе неверно !


 
Deniz ©   (2002-05-23 12:15) [4]

Если немного переделать, то:

set term ^;
create procedure Get_Next_ID
returns (Row_ID integer)
as
begin
Row_ID = gen_id(MyGenerator1, 1);
end
^
set term ;^


И соот-но тригер:

create trigger bi_MyTable for MyTable
before insert
as
begin
if (new.Row_ID is null) then
Row_ID = gen_id(MyGenerator1, 1);
end;

А уже в процедуре вставки (может и на клиенте) пользоваться.


 
Johnmen ©   (2002-05-23 12:22) [5]

>Deniz © (23.05.02 12:15) : Не-а...Принципиально неверно...


 
sergey32 ©   (2002-05-23 13:08) [6]

Я так и делал, в триггер писал new.id=gen_id(MyGen1,1);
а в процедуре писал insert и сразу же select max(id)


 
Johnmen ©   (2002-05-23 13:21) [7]

>...а в процедуре писал insert и сразу же select max(id)
Между твоим "insert" и "сразу же select max(id)" триггер может отработать еще раз или несколько от др.пользователей....




 
Fay ©   (2002-05-24 07:22) [8]

Johnmen , родной ! Что же делать !
Чтобы стало "Да-а...Принципиально верно".



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
4-55357
WindowSeeker
2002-04-13 08:01
2002.06.17
Чтение по адресам памяти с помощью WinApi


1-55061
cult
2002-06-05 17:47
2002.06.17
прорисовщик компонента


3-55022
Vova33
2002-05-21 17:59
2002.06.17
Инсталяция MS SQL Server


1-55170
UnDISCOvery
2002-06-04 16:42
2002.06.17
Как обеспечить корректный ввод IP-адреса ?


1-55206
Navi1982
2002-06-05 11:28
2002.06.17
Тип Real Как это работает?