powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 2 инсерта в связаные таблицы в ХП
4 сообщений из 4, страница 1 из 1
2 инсерта в связаные таблицы в ХП
    #32637792
OJIEI'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как быть!

Есть ХП которая делает INSERT в таблицу

Код: plaintext
1.
2.
3.
4.
create table MASTER 
(
    ID1_MSR  integer not null,     PK
    STATUS1  varchar( 1 ) not null
);

в этой-же ХП хочу сделать INSERT в подчиненную таблицу

Код: plaintext
1.
2.
3.
4.
5.
create table DETAIL
(
    ID2_DET  integer not null,     PK
    ID2_MSR  integer not null,    FK
    DATA2  timestamp( 1 ) not null
);

как мне узнать new.ID1_MSR insert которого делается строкой выше ??
возможно ли вообще такое ?
можна конечно выбирать максимальное ID1_MSR из MASTER но какие гарантии что за это время не пройдет другая транзакция (другой пользователь вставит строку), как вообще такие вещи делаются ??
...
Рейтинг: 0 / 0
2 инсерта в связаные таблицы в ХП
    #32637814
Matt Juntunen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Select Gen_ID(My_Gen1, 1 ) Into :MY_VAR

Insert Into Table1 (ID1,...
Select :MY_VAR,....

Insert Into Table2 (ID2, FK_ID, ...
Select  Gen_ID(My_Gen2, 1 ), :MY_VAR,....
...
Рейтинг: 0 / 0
2 инсерта в связаные таблицы в ХП
    #32638290
OJIEI'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если так:..
(триггер BeforeInsert к Table1 NEW.ID1 = GEN_ID(My_Gen1,1); удалил)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
AS
DECLARE VARIABLE MY_VAR INTEGER;
begin
  MY_VAR = GEN_ID(My_Gen1, 1 );
  insert into Table1 (ID1,...)         values (:MY_VAR,...);
  insert into Table2 (ID2, FK_ID, ...) values (Gen_I(My_Gen2, 1 ), :MY_VAR,...);
end

нету тут никаких подводных камней ?
...
Рейтинг: 0 / 0
2 инсерта в связаные таблицы в ХП
    #32639413
Matt Juntunen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде нормально..

MY_VAR = GEN_ID(My_Gen1,1); - надо у себя в FB 1.0 попробовать кстати..
Вот и получился взаимовыгодный обмен опытом.. :).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 2 инсерта в связаные таблицы в ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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