sql >> Database >  >> RDS >> PostgreSQL

INSERT in enkele query in 2 tabellen postgresql

Dit kan worden gedaan met behulp van een gemeenschappelijke tabeluitdrukking die gegevens wijzigt:

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

Het eerste deel wordt ingevoegd in de orders tabel en retourneert de ID die is ingevoegd. Het tweede deel voegt dan de rij in de completedby tabel met behulp van de bekende employee_id en het ophalen van de order_id uit de vorige stap.

Bewerken

als de id kolom in de orders tabel is een serial kolom en u wilt dat de reeks de waarde genereert, kunt u dat ook doen:

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. Hoe integer-waarden valideren om SQL-injectie te voorkomen?

  2. Waarom wordt het als een slechte gewoonte beschouwd om cursors in SQL Server te gebruiken?

  3. Kan module `mysql` node.js . niet vinden

  4. Database-sharding versus partitionering