PostgreSQL插入2个表?

时间:2018-07-05 07:29:37

标签: postgresql sql-insert postgresql-9.5

使用nodejs服务器,我认为不必使用每个单独的函数进行2个方法调用,而是调用一个查询将2个添加到数据库中。我已经在堆栈溢出附近搜索了一些有关此的问题,但是它们似乎不起作用。

我的示例是在注册阶段,将用户插入数据库,然后将一个名为user_settings的子用户表与关系键添加到所创建用户的用户ID。

我尝试但不起作用的一个示例是:

WITH ins1 AS (
   INSERT INTO users(firstname, lastname)
   VALUES ('foo', 'bar')
   RETURNING id AS user_id
   )
, ins2 AS (
   INSERT INTO user_settings(user_id, adddetails)
   SELECT user_id, 'foobar' FROM ins1
   )

当我尝试将其作为查询输入时,似乎不知道返回的user_id。

1 个答案:

答案 0 :(得分:0)

您的CTE缺少最终声明。第二个插入应该在CTE定义的“外部”:

WITH ins1 AS (
   INSERT INTO users(firstname, lastname)
   VALUES ('foo', 'bar')
   RETURNING id AS user_id
)
INSERT INTO user_settings(user_id, adddetails, "timestamp")
SELECT user_id, 'foobar', current_timetamp
FROM ins1;