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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |