postgresql - PostgreSQL 插入 2 个表?
问题描述
使用 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。
解决方案
您的 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;
推荐阅读
- python - joblib 对 for 循环进行并行计算,得到错误:'A task has filed to un-serialize'
- matplotlib - Jupyter Play 小部件跳过步骤
- stored-procedures - 存储过程中的输出参数问题
- java - 如何使用非自定义异常构造函数?
- python - 我想在 dict python 中验证 unicode
- apache - htaccess - 将所有内容重定向到 index.php,文件夹和特定文件除外
- c++ - 何时为 cout 包含引号
- dart - TextFormField 在点击时消失
- mongodb - 数组最小值和最大值为 $lte $gte
- r - 随机森林模型问题