PostgreSQL a une telle interprétation étendue des VALUES
clause qu'elle peut être utilisée comme sous-requête par elle-même.
Vous pouvez donc exprimer votre requête sous cette forme :
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;
Cela suppose que vous vouliez insérer le produit cartésien de new_invoice
et les valeurs, ce qui est généralement logique si new_invoice
est en fait une valeur à une seule ligne.