PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да вмъкна един ред в родителската таблица и след това множество редове в дъщерната таблица в един SQL в PostgreSQL?

PostgreSQL има такава разширена интерпретация на VALUES клауза, че може да се използва като подзаявка сама по себе си.

Така че можете да изразите вашето запитване в тази форма:

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;

Това предполага, че искате да вмъкнете декартовия продукт на new_invoice и стойностите, което най-вече има смисъл, ако new_invoice всъщност е стойност от един ред.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PG::SyntaxError за rails приложение

  2. Настройте SSH тунел с Paramiko за достъп до PostgreSQL

  3. Как да разрешите двусмислено съвпадение при верижно генериране на Jooq класове

  4. Граници на производителност на решенията за логическа репликация

  5. Как да предам параметър на таблица към тази функция?