Используйте postgres CTE в нескольких запросах - PullRequest
0 голосов
/ 22 октября 2018

Я могу использовать CTE в одном запросе, подобном этому

with mycte as (...)
  insert into table1 (col1) select col1 from mycte where col1 in
    (select col1 from mycte)

Но что, если я хочу использовать mycte в нескольких запросах?Как я могу сделать что-то вроде этой работы?

with mycte as (...)
  insert into table1 (col1) select col1 from mycte where col1 in
    (select col1 from mycte),
  insert into table2 (col1) select col1 from mycte where col1 in
    (select col1 from mycte)

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Для нескольких вставок вы можете поместить их в один запрос:

with mycte as (...),
     i1 as (
      insert into table1 (col1)
          select col1
          from mycte
          where col1 in (select col1 from mycte)
          returning *
     )
insert into table2 (col1)
    select col1
    from mycte
    where col1 in (select col1 from mycte);
0 голосов
/ 22 октября 2018

CTE - это специальное представление.Если вы хотите постоянное представление, которое вы можете использовать в нескольких запросах, используйте вместо него CREATE VIEW.

...