PostgreSQL има такава разширена интерпретация на VALUES
клауза, че може да се използва като подзаявка сама по себе си.
Така че можете да изразите вашето запитване в тази форма:
WITH new_invoice AS (
INSERT INTO ...
RETURNING id
),
v(a,b,c,d) AS (values
($27,$28,$29,$30),
($31,$32,$33,$34),
...
)
INSERT INTO invoiceItems (invoice_id, name, qty, price, description)
SELECT new_invoice.id, a,b,c,d FROM v, new_invoice;
Това предполага, че искате да вмъкнете декартовия продукт на new_invoice
и стойностите, което най-вече има смисъл, ако new_invoice
всъщност е стойност от един ред.