使用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。
答案 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;