Массовая INSERT для несуществующих записей, возвращающих ID - PullRequest
0 голосов
/ 27 июня 2018

Я использую pg-обещание для обработки массива данных, которые я хочу вставить в таблицу А. Мне трудно разобраться, как динамически создать этот запрос, который должен только вставлять те значения, которых еще нет в таблице, при этом возвращаются идентификаторы всех тех, кто уже присутствует или был недавно создан.

Я делаю следующее, но для одного элемента:

WITH s as
  ( SELECT *
   FROM fruits
   WHERE fruit_name = 'Apple' ),
       i AS
  ( INSERT INTO fruits(fruit_name) SELECT 'Apple'
   WHERE NOT exists
       (SELECT 1
        FROM s) RETURNING fruit_id)

Но скажи, что у меня есть Массив фруктов = ['Banana', 'Apple']. Как бы я использовал помощников, чтобы сгенерировать запрос, который бы возвращал существующий идентификатор для яблока и один для банана?

...