gpt4 book ai didi

postgresql - Postgres INSERT ON CONFLICT 与 JSONB

转载 作者:行者123 更新时间:2023-11-29 11:17:35 25 4
gpt4 key购买 nike

我正在尝试将 Postgres 用作文档存储,但在尝试有效地更新插入 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'。所有这些都是

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

我正在尝试做的事情目前是否受支持?

最佳答案

你有两个问题:

1) 您需要添加额外的括号,如下所示:

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

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

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

关于postgresql - Postgres INSERT ON CONFLICT 与 JSONB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com