首页 > 解决方案 > 插入冲突时增加字段数

问题描述

我有下表

“电话号码信息”

id  uuid
country character
phone_number    text
page_views  bigint

我有以下查询,它应该在表中插入一行,如果它已经存在,则增加 page_views 计数

INSERT INTO phone_number_info (country, phone_number) VALUES('us', '1234567890') 
ON CONFLICT (country, phone_number) 
DO UPDATE SET phone_number_info.page_views = (phone_number_info.page_views + 1); 

执行上面的查询时,我收到以下消息

Error in query: ERROR: column "phone_number_info" of relation "phone_number_info" does not exist
LINE 3: DO UPDATE SET phone_number_info.page_views = (phone_number_i...

查询有什么问题?

标签: postgresql

解决方案


子句中的列标识符SET不能不使用表名进行限定——它们总是引用更新的表。所以使用

INSERT INTO phone_number_info (country, phone_number) VALUES('us', '1234567890') 
ON CONFLICT (country, phone_number) 
DO UPDATE SET page_views = (phone_number_info.page_views + 1);
          ^^^^^^^^^^^^^^^^

推荐阅读