bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Вставка записи в главную таблицу и подчиненные?

Здравствуйте. Как можно одной конструкцией WITH вставить одной конструкцией в главную таблицу и две подчиненные?
Как в одну таблицу все работает
WITH new_tbl_main( id ) AS (
          INSERT INTO tbl_main ( institution_id ) VALUES ( 38)
            RETURNING id )       
          INSERT INTO tbl_child1 ( tbl_main_id ) 
            SELECT new_tbl_main.id  FROM new_tbl_main
            RETURNING tbl_main_id


а нужно еще вставить запись и в таблицу tbl_child2.
INSERT INTO tbl_child1 ( tbl_main_id ) 
            SELECT new_tbl_main.id  FROM new_tbl_main
  • Вопрос задан
  • 592 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Добавить ещё один CTE.
WITH new_tbl_main( id ) AS (
          INSERT INTO tbl_main ( institution_id ) VALUES ( 38)
            RETURNING id 
), chi2 as (
INSERT INTO tbl_child1 ( tbl_main_id ) 
            SELECT new_tbl_main.id  FROM new_tbl_main
)
INSERT INTO tbl_child1 ( tbl_main_id ) 
            SELECT new_tbl_main.id  FROM new_tbl_main
            RETURNING tbl_main_id

Если нужен returning от всех - то добавить ещё cte и в финале склеить запросы через union all или join или как понравится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы