exp*_*ert 10 postgresql upsert postgresql-9.5
我正在尝试使用新的 Postgresql 9.5 upsert 功能。但出于某种原因,我的查询说约束不存在(当它存在时)。
我的查询是这样的
INSERT INTO journals (ext_ids, title) VALUES ('{"nlmid": "000"}', 'blah')
ON CONFLICT ON CONSTRAINT idx_nlmid_journal DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
哪里idx_nlmid_journal是这样创造的jsonb领域唯一索引
CREATE UNIQUE INDEX idx_nlmid_journal ON public.journals ((ext_ids ->> 'nlmid'::text));
Run Code Online (Sandbox Code Playgroud)
我得到错误
ERROR: constraint "idx_nlmid_journal" for table "journals" does not exist
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
您使用的语法对唯一索引无效,因为唯一索引不会创建约束。您需要删除ON CONSTRAINT并改用索引表达式。
这有效:
INSERT INTO journals (ext_ids, title)
VALUES ('{"nlmid": "000"}', 'blah')
ON CONFLICT ((ext_ids ->> 'nlmid'::text))
DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10693 次 |
| 最近记录: |