加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – Postgres使用JSONB INSERT ON CONFLICT

发布时间:2020-12-13 18:05:24 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Postgres作为文档存储,当我试图有效地插入Postgres解析器似乎不喜欢 JSONB运算符的文档时遇到了问题. 我有一张桌子: CREATE TABLE tbl (data jsonb NOT NULL);CREATE UNIQUE INDEX ON tbl ((data-'a')); 我尝试插入数据: INSERT INTO tbl (d
我正在尝试使用Postgres作为文档存储,当我试图有效地插入Postgres解析器似乎不喜欢 JSONB运算符的文档时遇到了问题.

我有一张桌子:

CREATE TABLE tbl (data jsonb NOT NULL);
CREATE UNIQUE INDEX ON tbl ((data->>'a'));

我尝试插入数据:

INSERT INTO tbl (data) VALUES ('{ "a": "b" }'::jsonb) 
  ON CONFLICT (data->>a) 
  DO UPDATE SET data = data || '{ "a": "b" }'::jsonb

我收到此错误消息:

ERROR:  syntax error at or near "->>"

我已经尝试了数据 – >> a,data->>’a’,data-> a,以及data-gt;’a’.所有这些都是

我想将标识符列(示例中的a)保留在JSON中,而不是将其作为表中的列.

我目前正在尝试做什么?

你有两个问题:

1)您需要添加其他括号,如下所示:

ON CONFLICT ((data->>'a'))

2)您需要在表别名前加上最后一个数据引用,如下所示:

DO UPDATE SET data = tbl.data || '{ "a": "b" }'::jsonb

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读