Я пытаюсь использовать 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) в JSON, а не делать его столбцом в таблице.
Поддерживается ли то, что я пытаюсь сделать в настоящее время?