如何设置变量JSON键

How to set variable JSON key

当键是变量时,如何为 JSON 对象中的键设置值?

我有这个代码的功能:

CREATE OR REPLACE FUNCTION on_text_key_insert() RETURNS trigger AS  $$
...
UPDATE t_text SET all_keys->NEW.key = NEW.value
     WHERE node = NEW.node;

这会产生错误:

CREATE FUNCTION
ERROR:  syntax error at or near "->"
LINE 6:  UPDATE t_text SET all_keys->NEW.key = NEW.value

文档说使用 -> ,我正在使用它!为什么不起作用?

假设NEW.value是一个字符串:

SET all_keys = jsonb_set(all_keys, ARRAY[NEW.key], ('"'||NEW.value||'"')::jsonb)