首页 > 解决方案 > 如何修复 postgresql UPSERT 中的语法错误?

问题描述

我正在尝试学习 postgresql 的 upsert 语法,但我不断收到此错误:

ERROR:  syntax error at or near "name"
LINE 5:     SET name = EXCLUDED.name;

这是sql语句:

INSERT INTO users (name, fav_num) 
VALUES ('bob', 2) 
ON CONFLICT (id) DO UPDATE 
SET fav_num = EXCLUDED.fav_num, 
SET name = EXCLUDED.name;

我尝试将 exclude.fav_num 和 exclude.name 更改为值,但我仍然遇到相同的错误。我正在运行 PostgreSQL 10.6。什么应该是正确的查询?

桌子:

|------|------|---------|
|  id  | name | fav_num |
|------|------|---------|
|  1   | bob  |    1    |
|------|------|---------|

标签: sqlpostgresqlpostgresql-9.5upsert

解决方案


它是SET这样的:

SET fav_num = EXCLUDED.fav_num, name = EXCLUDED.name

注意且只有一SET


推荐阅读