Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

Делаю 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-55064
SleD
2002-06-02 14:13
2002.06.17
Насчёт КРУГЛЫХ картинок


1-55162
Skynet
2002-06-04 03:41
2002.06.17
Использование TListView в режиме vsReport


1-55054
Olegek
2002-06-04 20:10
2002.06.17
Поговорим о ListView?


7-55322
Denis83
2002-03-19 17:25
2002.06.17
DVD


1-55105
SPeller
2002-06-06 00:49
2002.06.17
Окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский