Операторы пакетного возврата в PostgreSQL?

#postgresql

#postgresql

Вопрос:

Я делаю

 INSERT INTO table DEFAULT VALUES RETURNING id
  

который возвращает идентификатор, который позже используется в вызывающем коде. Но если я сделаю

 INSERT INTO table DEFAULT VALUES RETURNING id;
INSERT INTO table DEFAULT VALUES RETURNING id;
INSERT INTO table DEFAULT VALUES RETURNING id;
  

Я получаю только последнее возвращаемое значение.

Каков правильный способ сделать это, в виде конструкции «сделать это n раз» или объединения вышеуказанных (которые должны работать для любого запроса возврата)?

Ответ №1:

Вы можете использовать (менее известный факт), что вы можете запустить оператор SELECT, не помещая ни одного столбца в список выбора.

 insert into the_table --<< no columns here!
select --<< no columns here either!
from generate_series(1,3);
  

Онлайн-пример