sql >> Databáze >  >> RDS >> PostgreSQL

INSERT v jediném dotazu do 2 tabulek postgresql

To lze provést pomocí běžného tabulkového výrazu upravujícího data:

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

První část se vkládá do orders tabulku a vrátí ID, které bylo vloženo. Druhá část pak vloží řádek do completedby pomocí známého id_zaměstnance a načtením id_objednávky z předchozího kroku.

Upravit

pokud id ve sloupci orders tabulka je serial a chcete nechat sekvenci generovat hodnotu, můžete to udělat také:

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. Srovnávání spravovaných cloudových řešení PostgreSQL:Část druhá – Amazon RDS

  2. MySQL NA DUPLIKÁTNÍM KLÍČI – poslední vložené ID?

  3. Připravte testovací data na Oracle se sloupcem blob

  4. Rozdíl v datech MySQL