PostgreSQL ha un'interpretazione così estesa dei VALUES
clausola che può essere utilizzata da sola come subquery.
Quindi puoi esprimere la tua domanda in questo modulo:
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;
Ciò presuppone che tu voglia inserire il prodotto cartesiano di new_invoice
e i valori, che per lo più ha senso se new_invoice
è in realtà un valore a riga singola.