INSERT ALL INTO и Sequence.nextval для суррогатного ключа

Я пытаюсь вставить 40 строк, используя INSERT ALL INTO, и я не уверен, как вставить суррогатный ключ. Вот что я have

BEGIN
   INSERT ALL 

   INTO  question(question_id)
   VALUES (question_seq.nextval)
END

Теперь, если я добавлю еще один INTO VALUES, я получу уникальное нарушение ограничения.

BEGIN
   INSERT ALL 

   INTO  question(question_id)
   VALUES (question_seq.nextval)

   INTO  question(question_id)
   VALUES (question_seq.nextval)
END

Как я могу обновить значение nextval последовательности для каждого INTO VALUES, чтобы я мог избежать нарушения уникального ограничения? Я предполагал, что nextval будет автоматически

ОБНОВЛЕНИЕ : я не знаю, лучший ли это способ справиться с этим, но вот решение, которое я придумал:

сначала я создал функцию, которая возвращает значение затем я вызвал эту функцию в поле id предложения VALUES

create or replace
FUNCTION GET_QUESTION_ID RETURN NUMBER AS 
num NUMBER;
BEGIN
  SELECT UHCL_QUESTIONS_SEQ.nextval 
  INTO num 
  FROM dual;  
  return num;  
END GET_QUESTION_ID;

INSERT ALL
INTO question(question_id)
VALUES (GET_QUESTION_ID())
INTO question(question_id)
VALUES (GET_QUESTION_ID())
8
задан Robert 3 December 2011 в 21:10
поделиться