У меня есть база данных Postgresql с тремя таблицами, составляющими отношение «многие ко многим», article
, author
и article_authors
. У меня есть запрос на основе this вопрос, который вставляет в article
и author
, если запись не существует, и возвращает id
, и если он существует, то он возвращает id
все равно:Вставить в таблицу соединений после возвращения нескольких идентификаторов
WITH article_s AS (
SELECT id
FROM article
WHERE id = 25
),
article_i AS (
INSERT INTO article
(id, web_id, article_title, pub_date, publishers_id)
SELECT 25, 'world/2013', 'a_title', '2015-07-07T21:58:28Z', 1
WHERE NOT EXISTS (SELECT 1 FROM article_s)
RETURNING id
),
author_s AS (
SELECT id
FROM author
WHERE id = 34),
author_i AS(
INSERT INTO author (id, name)
SELECT 34, 'an_author'
WHERE NOT EXISTS (select 1 from author_s)
RETURNING id
)
SELECT article_i.id, author_i.id
FROM article_i, author_i
UNION ALL
SELECT article_s.id, author_s.id
FROM article_s, author_s;
мне теперь нужно вставить возвращенный ID
в article_authors
, но не совсем уверен, как получить доступ к возвращенному ID
, чтобы сделать это. Возможно ли это, или есть более элегантный способ решения этой проблемы? Заранее спасибо!
спасибо за ответ, только просто на самом деле справляется с sql, поэтому я буду помнить об этом. – sammy88888888