我试图使用Postgres作为文档存储,当我试图有效地upsert一个文档时,Postgres解析器似乎不喜欢JSONB操作符,我遇到了一个问题。
我有一张table:
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 "->>"
型
我试过data->>a,data->'a',data->a,也许还有data-'a'。
我想将标识符列(示例中的a)留在JSON中,而不是将其作为表中的列。
我正在尝试做的事情目前是否得到支持?
2条答案
按热度按时间ogsagwnx1#
阅读PostgreSQL documentation关于这个主题的文章。如果你试图构建一个json解析器,你可能想使用
json_populate_record
函数来填充表格。另请参阅这个相关问题:tquggr8v2#
你有两个问题:
1)您需要添加额外的括号,如下所示:
字符串
2)您需要在最后一个
data
引用之前加上您的表别名,如下所示:型