在同一条INSERT语句中组合使用VALUES与SELECT子句报错如何解决
问题修复方案
报错原因
INSERT语句不支持同时使用VALUES子句和SELECT子句定义插入值,你的需求是插入固定的文章内容+上一步插入用户返回的ID,直接把固定值放到SELECT的返回字段列表中即可,不需要单独写VALUES。同时你原代码中存在笔误:CTE别名为insert_user,查询时误写为复数的insert_users。
修改后的可运行代码
WITH insert_user AS ( INSERT INTO users (user_name) VALUES ('omni') RETURNING * ), insert_articles AS ( INSERT INTO articles (article_text, user_id) SELECT 'article text', insert_user.id FROM insert_user RETURNING * ) -- 按需补充最终返回逻辑,例如返回插入的文章数据: SELECT * FROM insert_articles;
扩展说明
- 如果需要批量插入多条关联记录,可以在
SELECT后拼接UNION ALL,每组固定值对应一条SELECT查询 - 该语法适用于PostgreSQL、PolarDB-PG等支持WITH DML(写操作CTE)的数据库
内容的提问来源于stack exchange,提问作者docHoliday
相关产品推荐
相关产品推荐

