sql - Postgres:关于与隐式冲突目标的冲突
问题描述
用于插入的 Postgres 10 和 11 规范说:
ON CONFLICT [冲突目标]冲突动作
我有一张桌子:
create table c (
e text not null,
m text not null,
v numeric not null,
PRIMARY KEY (e, m)
)
我想做
insert into candle values (...)
on conflict do update set
v = 5
但我收到一个错误:
ON CONFLICT DO UPDATE 需要推理规范或约束名称提示:例如,ON CONFLICT (column_name)
为什么我必须提供一个相互矛盾的目标?如何提供主键或其他一些列集?
解决方案
是的,conflict_target
是可选的,但仅限于DO NOTHING
.
根据文档:
对于
ON CONFLICT DO NOTHING
,可以选择指定一个conflict_target
; 省略时,将处理与所有可用约束(和唯一索引)的冲突。对于ON CONFLICT DO UPDATE
,conflict_target
必须提供一个。
推荐阅读
- c# - 部署 .net core api AWS 无服务器应用程序后出现 403 Forbidden/500 Internal Server Error
- python - 有没有办法使用python通过elementtree中的id属性过滤xml
- arrays - 如何创建具有请求长度的数组?
- java - 在休眠中映射对象查询
- c# - 是什么 ?[]?C#中的语法?
- javascript - 如何在html中使用json值制作分层动态菜单?
- c# - 在录制视频并在android c#中保存带水印的视频时添加图像作为水印
- javascript - 在 localStorage 中保存列的顺序
- dropbox - Dropbox 事件的查询字符串
- python - 使用 pandas python 将 2 个 groupby 输出与 lambda 组合