PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

INSERT в една заявка в 2 таблици postgresql

Това може да се направи с помощта на модифициращ данни израз на обща таблица:

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

Първата част се вмъква в orders таблица и връща идентификатора, който е бил вмъкнат. След това втората част вмъква реда в completedby таблица с помощта на известния Emploee_ID и извличане на order_id от предишната стъпка.

Редактиране

ако id колона в orders таблицата е serial колона и искате да оставите последователността да генерира стойността, можете да направите и това:

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. postgres - изберете * от съществуваща таблица - psql казва, че таблицата не съществува

  2. Актуализирайте стойността на ключа в масив от обекти jsonb

  3. pg_restore не можа да изпълни заявка:ГРЕШКА:невалидно име на локал:en_US.UTF-8

  4. PostgreSQL колоната foo не съществува, където foo е стойността

  5. Топ 5 PostgreSQL инструменти за наблюдение на заявки