PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

INSERT in einer einzigen Abfrage in 2 Tabellen postgresql

Dies kann mit einem allgemeinen Tabellenausdruck zur Datenänderung erfolgen:

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)
);

Der erste Teil wird in die orders eingefügt Tabelle und gibt die eingefügte ID zurück. Der zweite Teil fügt dann die Zeile in completedby ein Tabelle mit der bekannten employee_id und Abrufen der order_id aus dem vorherigen Schritt.

Bearbeiten

wenn die id Spalte in den orders Tabelle ist eine serial -Spalte und Sie möchten, dass die Sequenz den Wert generiert, können Sie das auch tun:

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)
);