sql >> Database >  >> RDS >> PostgreSQL

Hoe voeg ik meerdere rijen met een externe sleutel in met behulp van een CTE in Postgres?

Het volgende is een redelijke interpretatie van wat u wilt doen:

with i as (
      insert into products (title, description, price)
          values ('Dope product 1', 'Buy diz', 9.99),
                 ('Dope product 2', 'Buy diz', 8.99),
                 ('Dope product 3', 'Buy diz', 7.99)
          returning *
     ) 
insert into product_metadata (product_id, sales_volume, date)
    select i.product_id, v.sales_volume, v.date
    from (values ('Dope product 1', 80, '2017-03-21'),
                 ('Dope product 2', 50, '2017-03-21'), 
                 ('Dope product 3', 70, '2017-03-21')
         ) v(title, sales_volume, date) join
         i
         on i.title = v.title;

Het basisantwoord is "gebruik returning * en gebruik een join om de waarden te krijgen". Ik moest de titels wijzigen zodat ze uniek zijn.



  1. Correct opgemaakte MySQL date insert statement retourneert alle nullen

  2. Subquery met LIMIT in Doctrine

  3. MySQL-kolom 'Tijdstempel bijwerken' - Trigger

  4. Is er een SQL-instructie die 2 lange kolommen in verschillende paren kolommen zal breken?