sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan indsætter man en enkelt række i den overordnede tabel og derefter flere rækker i den underordnede tabel i enkelt SQL i PostgreSQL?

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.



  1. JPA - Indstilling af enhedsklasseegenskab fra beregnet kolonne?

  2. Datointerval skæringspunkt i SQL

  3. Ændring af ORDER BY fra id til en anden indekseret kolonne (med lav LIMIT) har en enorm omkostning

  4. Brug DATABASEPROPERTYEX() til at returnere databaseindstillinger i SQL Server