在Postgres 9.3,Python 2.7版,psycopg2工作。
我有一个名为表SomeTable
用JSON场some_json_array
和row_id
关键。
some_json_array
看起来是这样的:
"[{'key': 'value_one'}, {'key': 'value_two'}, etc]"
我也有,我正在尝试添加一些元素的JSON数组的函数SomeTable
对应于给定row_id
。
我的代码如下:
CREATE OR REPLACE FUNCTION add_elements (insertion_id smallint, new_elements_json json)
RETURNS void AS $$
BEGIN
UPDATE SomeTable
SET some_json_array = (SELECT array_to_json(array_agg(some_json_array) || array_agg(new_elements_json)))
WHERE row_id = insertion_id;
END;
$$ LANGUAGE plpgsql;
我得到以下错误:
Cannot use aggregate function in UPDATE
我相信在抱怨array_agg()
我将如何修改这个功能,使其工作? 我能坚持的WHERE
子句为SELECT
如果有必要声明。