powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Insert в две таблицы
3 сообщений из 3, страница 1 из 1
Insert в две таблицы
    #36750312
Ngels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый всем день!

Никак не могу сообразить, как вставить записи в две таблицы одним кодом.

Master-таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE "PARTY"
  (
    "PARTY_CODE" NUMBER NOT NULL ENABLE
  )
  CREATE
OR REPLACE TRIGGER "BI_PARTY" before
INSERT ON "PARTY" FOR EACH row BEGIN IF :NEW."PARTY_CODE" IS NULL THEN
SELECT "PARTY_SEQ".nextval INTO :NEW."PARTY_CODE" FROM dual;
END IF;
END;
/

Detail-таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE "LISA"."PARTY_IN_GROUP"
  (
    "PARTY_GROUP" VARCHAR2( 4000  BYTE) NOT NULL ENABLE,
    "PARTY"       NUMBER NOT NULL ENABLE
  )
  CONSTRAINT "ЛИЦО_ГРУППА_FK" FOREIGN KEY
  (
    "PARTY"
  )
  REFERENCES "PARTY"
  (
    "PARTY_CODE"
  )
  ON


Написал insert pl/sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
insert 
into party (PARTY_CODE)
values (:P54_PARTY_CODE);

insert 
into party_in_group
(PARTY)
values
(:P54_PARTY_CODE);

commit;
end;

В PARTY строку добавляет, в PARTY_IN_GROUP - нет.

Предполагаю, что при добавлении в PARTY, ключ берется не из :P54_PARTY_CODE, а по триггеру из SEQ, так что в PARTY_IN_GROUP вставлять нечего, так и пишет, что null вставить не может.

Как выцепить вновь созданный ключ (PARTY_CODE) из SEQ, чтоб его сразу в другую таблицу вставить?




Буду очень благодарен за подсказки!
...
Рейтинг: 0 / 0
Insert в две таблицы
    #36750345
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NgelsКак выцепить вновь созданный ключ (PARTY_CODE) из SEQ, чтоб его сразу в другую таблицу вставить?

RTFM RETURNING INTO clause , внизу - ссылки на примеры.
...
Рейтинг: 0 / 0
Insert в две таблицы
    #36750701
Ngels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer, спасибо за направление.

Решением вышел такой код, может кому бригодится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE
  PARTY_ID PARTY.PARTY_CODE%TYPE;
begin
insert 
into party (PARTY_CODE)
values (:P54_PARTY_CODE)

RETURNING PARTY_CODE INTO PARTY_ID;

insert
into party_in_group
(PARTY)
values
(PARTY_ID);

commit;
end;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Insert в две таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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