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

WSTAW w jednym zapytaniu do 2 tabel postgresql

Można to zrobić za pomocą wspólnego wyrażenia tabelowego modyfikującego dane:

with new_order as (
  insert into orders (id, date) values (1, current_date)
  returning id
)
insert into completedby (employee_id, order_id)
values 
( 42 -- employee_id, 
  (select id from new_order)
);

Pierwsza część wstawia się do orders tabeli i zwraca wprowadzony identyfikator. Druga część następnie wstawia wiersz do completedby tabeli używając znanego identyfikatora pracownika i pobierając identyfikator zamówienia z poprzedniego kroku.

Edytuj

jeśli id kolumna w orders tabela jest serial kolumna i chcesz, aby sekwencja wygenerowała wartość, którą możesz również zrobić:

with new_order as (
  insert into orders (date) values (current_date)
  returning id
)
insert into completedby (employee_id, order_id)
values 
( 42 -- employee_id, 
  (select id from new_order)
);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL, aby usunąć tylko jeden wiersz z duplikatów

  2. Funkcja Postgresql z instrukcją if

  3. postgres tylko przy użyciu posortowanego indeksu do odpytywania tabeli rekordów 5m

  4. Jak UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) w PostgreSQL?

  5. Jak działa funkcja Ln() w PostgreSQL