Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема множественной вставки в несколько таблиц и создания ключа / 8 сообщений из 8, страница 1 из 1
16.02.2017, 18:21
    #39406055
PaxExterminatus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Код: plsql
1.
2.
3.
4.
5.
6.
7.
INSERT ALL
  WHEN FLAG_CREATE_STREAM = 1 THEN
  INTO EMSG_STREAM VALUES (EMSG_STREAM_SEQ.NEXTVAL, EMSG_CAUSE, NULL, CLIENT_ID)
  WHEN FLAG_CREATE_STREAM > 0 THEN
  INTO EMSG VALUES (EMSG_STREAM_SEQ.CURRVAL, EMSG_SEQ.NEXTVAL, EMSG_TYPE, EMSG_TYPE_SUB, EMSG_DATE, EMSG_ADDRESS, EMSG_BODY, EMSG_STATUS)

SELECT...



ORA-02291: integrity constraint (FK_EMSG_STREAM) violated - parent key not found

Можно ли как-то решить эту проблему малой кровью?
...
Рейтинг: 0 / 0
16.02.2017, 18:24
    #39406057
PaxExterminatus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Алгоритм примерно такой,

для каждого первого EMSG создать STREAM, для последующих использовать ранее созданный STREAM
...
Рейтинг: 0 / 0
16.02.2017, 18:38
    #39406069
PaxExterminatus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Получается что запрос создает вот это:
EMSG_STREAM STREAM_CAUSE USER_ID CLIENT_ID50 1 (null) 1339023

EMSG_STREAM EMSG EMSG_TYPE50 37896151 37897 2
...
Рейтинг: 0 / 0
16.02.2017, 18:44
    #39406075
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Счётчик инкрементируется для каждой строки запроса . Так они работают. И это задокументировано.
...
Рейтинг: 0 / 0
16.02.2017, 19:13
    #39406100
PaxExterminatus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
, SEQ AS ( 

SELECT
  msg.EMSG_TYPE,
  msg.CLIENT_ID,
  ROW_NUMBER() OVER (PARTITION BY msg.CLIENT_ID ORDER BY msg.CLIENT_ID, msg.EMSG_TYPE) GRNUM
FROM 
  MSG_LIST msg,
  CLIENT_PROPERTY cp
WHERE msg.CLIENT_ID = cp.CLIENT_ID
)


SELECT 
  CLIENT_ID,
  GRNUM,
  CASE WHEN GRNUM = 1 THEN EMSG_STREAM_SEQ.NEXTVAL
       ELSE EMSG_STREAM_SEQ.NEXTVAL - GRNUM + 1
  END AS SSS
  
FROM SEQ
...
Рейтинг: 0 / 0
16.02.2017, 19:33
    #39406112
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
PaxExterminatus, поток сознания лучше переместить в другое место
...
Рейтинг: 0 / 0
16.02.2017, 20:00
    #39406129
PaxExterminatus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
Elic, зато работает, а вам советую негатив в другое место переместить
...
Рейтинг: 0 / 0
16.02.2017, 21:03
    #39406165
хунтер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема множественной вставки в несколько таблиц и создания ключа
PaxExterminatusElic, зато работает, а вам советую негатив в другое место переместить

До поры до времени.
Приходите еще и расскажете нам в каком месте еще что то поламалось,
нам будет очень интересно :)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема множественной вставки в несколько таблиц и создания ключа / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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