如何修复Postgresql UPSERT中的语法错误?

时间:2019-01-18 17:52:45

标签: sql postgresql postgresql-9.5 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    |
|------|------|---------|

1 个答案:

答案 0 :(得分:3)

SET如下:

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

请注意一个,只有一个SET