Главная страница
    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.45 MB
Время: 0.006 c
1-55064
SleD
2002-06-02 14:13
2002.06.17
Насчёт КРУГЛЫХ картинок


1-55161
ЗЛ
2002-06-04 14:50
2002.06.17
Есть StringGrid и у меня в зависимости от того какая команда в яч


1-55187
PTE
2002-06-05 08:53
2002.06.17
Timer и ProgressBar


4-55365
aaaaaaaaaaaaaaaa
2002-04-16 13:41
2002.06.17
Отправить email прямо через SMTP сервер


1-55151
Reticent
2002-06-04 13:38
2002.06.17
ColumnClick!?!?!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский