基本语法, 通过 INSERT ON CONFLICT 来使用 upsert 功能
duplicate key value violates unique constraint
[Err] ERROR: duplicate key value violates unique constraint “kxstore_pkey”
DETAIL: Key (id)=(13793638137224) already exists.
upsert :(update or insert)
INSERT INTO table_name(column_list) VALUES(value_list)
ON CONFLICT target action;
target
可以是:
1、(column_name)
:一个字段名
2、ON CONSTRAINT constraint_name:
其中的 constraint_name 可以是一个唯一约束的名字
3、WHERE predicate:
带谓语的 WHERE 子句
action
可以是:
1、DO NOTHING:
当记录存在时,什么都不做
2、DO UPDATE SET column_1 = value_1, … WHERE condition:
当记录存在时,更新表中的一些字段
注意,ON CONFLICT 只在 PostgreSQL 9.5 以上可用。
insert into
table_name (col_1,col_2,col_3,col_4,col_5)
values (value_1,value_2,value_3,value_4,value_5),
(value1_1,value1_2,value1_3,value1_4