sql >> Databasteknik >  >> RDS >> PostgreSQL

INFOGA i en enda fråga i 2 tabeller postgresql

Detta kan göras med ett datamodifierande gemensamt tabelluttryck:

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

Den första delen infogas i orders tabell och returnerar det ID som infogades. Den andra delen infogar sedan raden i completedby tabell med det kända anställda_id och hämta order_id från föregående steg.

Redigera

om id kolumnen i orders tabellen är en serial kolumn och du vill låta sekvensen generera värdet kan du också göra det:

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. MySQL:ALTER IGNORE TABLE LÄGG TILL UNIK, vad kommer att trunkeras?

  2. MySQL-fel #1071 - Angiven nyckel var för lång; max nyckellängd är 767 byte

  3. Skapar ActionScript Date-objekt från MySQL UTC-tidsstämpelsträng

  4. gruppera arkiv efter år och månad med php och mysql