postgresql - 带有部分索引的更新:“没有唯一匹配 ON CONFLICT 规范”
问题描述
我正在使用upsert
带有部分索引的 an 。我知道如果我使用部分索引,我必须指定谓词,但由于某种原因它找不到索引。我发现了很多类似的帖子,但通常是拼写错误或ON CONFLICT
条款中缺少条件。就我而言,我无法发现问题。
索引如下所示:
CREATE INDEX index_plays_on_user_id_and_episode_id ON db.plays USING btree (user_id, episode_id) WHERE (NOT ((client)::text = 'Web'::text))
我正在尝试执行以下 upsert 但这不起作用:
INSERT INTO plays (client, user_id, scrobble_id, event_timestamp, episode_id)
VALUES ('Mac', 2, 14159, '2020-07-11 20:10:32.813406', 141800194)
ON CONFLICT (user_id, episode_id) WHERE (NOT ((client)::text = 'Web'::text))
DO NOTHING
;
输出:
ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
知道有什么问题吗?
解决方案
推荐阅读
- html - 将动画阴影应用于 Bootstrap 4 卡片
- amazon-s3 - S3 拒绝无服务器框架 lambda 函数访问
- kubernetes - 如何正确地将 OpenLDAP 集成到 Keycloak?
- c++ - 为什么 C++ 向量交换方法具有恒定的时间复杂度
- django-3.0 - django3文件上传默认权限是420?
- ruby-on-rails - 如何修复损坏的系统 Ruby 安装
- git - 当你想在 github 上使用 Gatsby 实现的博客并在另一台计算机上使用时,如何构建?
- python - ROS通用目录定义
- html - 在 Google 表格中查找 X-Path/加载数据
- .net-core - 在 .Net Core 3.1 中,如何从代码覆盖范围中排除自动属性?