Вставка идентификатора в инструкцию цикла Oracle9 - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь вставить кучу данных в таблицу, используя цикл for.Для первичного ключа я пытаюсь использовать последовательность, но получаю:

ORA-00001: ошибка уникального ограничения (constraint_name).

Мой код выглядит следующим образом:

FOR a IN (select * from table a)
LOOP 

    select seq.nextval into id1 from dual;

    insert into table b (primarykey, value1...)

    select (id1, value1...) from table c

end loop

Есть идеи, почему я все еще получаю уникальную ошибку ограничения?

1 Ответ

0 голосов
/ 25 мая 2018

Я предполагаю, что таблица c может содержать более одной строки:

FOR a IN (select * from table_a) LOOP
  select seq.nextval into id1 from dual;

  insert into table_b (primarykey, value1...)
  select id1, value1... from table_c;    
  -- the same id1 will be used for many rows 
  -- and cause `UNIQUE` constraint violation

end loop;

Я бы переписал ее как:

INSERT INTO table_b(primarykey, value1...)
SELECT seq.nextval, value1, ...
FROM table_c
WHERE ....;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...