Я видел здесь несколько ответов для некоторых распространенных случаев использования CTE для вставки в несколько таблиц, при попытке выполнить те же шаги я получаю сообщение об ошибке:
Отсутствует запись From-clause для таблица "first_insert" позиция 824.
Мое выражение CTE выглядит следующим образом:
with first_insert as (
insert into listing (title, slug, price, min_quantity, serves, currency_name, currency_symbol, img_url, description,
location, g_map_address, vendor_id)
values ('hello', 'hello-1234', 1, 12, 10, 'eur', '€','url.jpg',
'description', point(24.5498, 16.26), 'gmap', 1)
RETURNING id
),
second_insert as (
insert into category (name, suggested_name, link, rel_link, listing_id)
select 'name', 'name', 'link', 'rel_link', id
from first_insert
),
third_insert as (
insert into allergen (name, suggested_name, link, rel_link, listing_id)
select 'name', 'name', 'link', 'rel_link', id
from first_insert
)
insert into image(listing_id, img_url) select first_insert.id, 'imgUrl';
1 - Как я могу заставить это работать, поскольку вставки не требуются, поэтому не уверен, с чего начать.
2 - Это лучший способ с точки зрения производительности для выполнения этих типов вставок?
3 - Классифицируется ли это как безопасные вставки, если они есть одна из вставок не работает, когда уже выполненные вставки откатываются?
4 - Есть ли в целом способ сделать такую вставку лучше с точки зрения производительности и безопасности?