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

Как да вмъкна няколко реда с външен ключ, използвайки CTE в Postgres?

Следното е разумно тълкуване на това, което искате да направите:

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;

Основният отговор е „използвайте returning * и използвайте join за да получа стойностите". Трябваше да променя заглавията, така че да са уникални.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku pg:psql спира

  2. Може ли plv8 езиковото разширение на JavaScript да извиква библиотеки на трети страни?

  3. Динамично upsert в postgresql

  4. PostgreSQL 12:Внедряване на K-Nearest Neighbor Space Partitioned Generalized Search Tree Indexs

  5. Преброяване на честотата на масив или jsonb обект