将查询插入到三个表

时间:2019-03-19 13:09:21

标签: sql postgresql sql-insert

我有3个表:“新闻”,“要求”,“条件”。新闻-基本表格。从“新闻”到合并(news_mechanic)的需求和条件依赖性。如何通过单个查询一次将数据插入所有表。我知道,我必须使用扳机。但是,怎么做呢?

CREATE TABLE news (id_news SERIAL PRIMARY KEY, text_news VARCHAR NULL, date_created date NULL).
CREATE TABLE conditions (id, gender_men boolean NULL, gender_women boolean NULL, age_from INTEGER NULL, age_to INTEGER NULL, etc).
CREATE TABLE requirements (id, name VARCHAR, mechanic_test, mechanic_cunsultation, etc).

1 个答案:

答案 0 :(得分:0)

使用CTE:

with news_i as (
      insert into news( . . . )
          . . .
          returning (*)
     ),
     conditions_i as (
      insert into conditions ( . . . )
          . . . 
          returning (*)
     )
insert into requirements ( . . . )
    . . .;

每个CTE返回要插入的值,因此可以在查询的后续逻辑中使用它们。我在您的数据模型中看不到外键关系,所以我不知道您是否需要其他表中的一个数据。