sql >> Databáze >  >> RDS >> PostgreSQL

Jak vložit jeden řádek do nadřazené tabulky a poté více řádků do podřízené tabulky v jediném SQL v PostgreSQL?

PostgreSQL má takto rozšířenou interpretaci VALUES klauzule, že může být použit jako poddotaz sám o sobě.

Svůj dotaz tedy můžete vyjádřit v tomto tvaru:

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;

To předpokládá, že chcete vložit kartézský součin new_invoice a hodnoty, které většinou dává smysl, pokud new_invoice je ve skutečnosti jednořádková hodnota.



  1. Proč PostgreSQL sloučil uživatele a skupiny do rolí?

  2. Oracle 11g - jak vrátit záznam z funkce se spojením tabulky

  3. Jak vytvořit a spustit dynamický dotaz v uložené proceduře Oracle?

  4. Co je @@MAX_PRECISION na serveru SQL Server?