【发布时间】:2018-09-05 12:37:43
【问题描述】:
我正在使用 PostgreSQL v9.6.6。我正在运行以下 SQL:
insert into t_vs_config_key (name, description, is_brand_dependent)
values ('ucp.cluster','UCP Cluster', true)
ON CONFLICT (name) DO UPDATE SET is_brand_dependent=true;
这会导致以下错误,因为 name 列未作为唯一索引。我无法添加索引,因为现有数据不是唯一的。
错误:没有与 ON 匹配的唯一或排除约束 冲突规范
问题 任何想法如何在没有索引的情况下执行 upsert 语句?
谢谢
【问题讨论】:
-
AFAIK 没有唯一索引就无法做到
-
如果你使用
ON CONFLICT (name, description, is_brand_dependent)? -
@AnonyDev 如果我尝试
ON CONFLICT (name, description, is_brand_dependent)会得到同样的错误@ -
也许在这里回复但不确定:medium.com/@betakuang/…
-
因为如果您没有唯一索引/主键,则不会发生冲突。数据库的冲突是当它不可能做某事时(例如将非唯一值放入唯一索引)。
标签: sql postgresql