You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres使用SELECT做Upsert提示excluded.username不存在如何解决

报错原因

PostgreSQL的Upsert逻辑中,excluded是保存待插入行数据的虚拟表,它的列名完全和INSERT语句里指定的目标表插入列名对应,和SELECT子句的字段别名、源表的字段名没有关联。
你当前INSERT语句指定插入的列是entity_id、entity_type、search_content,因此excluded表中只存在这三个列,你调用excluded.username自然会触发字段不存在的报错。

修复方案

将冲突更新逻辑里引用的列名替换为excluded.search_content即可,修改后的完整SQL如下:

INSERT INTO global_search (entity_id, entity_type, search_content)
SELECT id, 'user', "username"
FROM "user"
WHERE "id" = 1
ON CONFLICT (entity_id) DO UPDATE
SET search_content = excluded.search_content

内容的提问来源于stack exchange,提问作者jstaab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:27:02