PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstawić pojedynczy wiersz w tabeli nadrzędnej, a następnie wiele wierszy w tabeli podrzędnej w pojedynczym SQL w PostgreSQL?

PostgreSQL ma tak rozszerzoną interpretację VALUES klauzulę, że może być użyte jako samo podzapytanie.

Możesz więc wyrazić swoje zapytanie w tej formie:

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 zakłada, że ​​chcesz wstawić iloczyn kartezjański new_invoice i wartości, co ma sens głównie wtedy, gdy new_invoice jest w rzeczywistości wartością jednowierszową.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie identyfikatora seryjnego z partii wstawionych wierszy w postgresql

  2. Dodawanie wielokolumnowego klucza podstawowego do tabeli z 40 milionami rekordów

  3. Wyzwalacz pożaru przy aktualizacji kolumny A, kolumny B lub kolumny C

  4. Docker exec - nie może wywołać postgresa ze zmiennymi środowiskowymi

  5. Jak usunąć wiele tabel w PostgreSQL za pomocą symbolu wieloznacznego?