PostgreSQL har en sådan udvidet fortolkning af VALUES
klausul, at den kan bruges som en underforespørgsel i sig selv.
Så du kan udtrykke din forespørgsel i denne form:
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;
Det forudsætter, at du vil indsætte det kartesiske produkt af new_invoice
og værdierne, hvilket for det meste giver mening, hvis new_invoice
er faktisk en enkelt række værdi.