如何将元素插入到POSTGRESQL 9.5 jsonb字段中包含的数组中?

时间:2016-08-14 05:52:06

标签: postgresql jsonb postgresql-9.5

我将数据存储在PostgreSQL 9.5中名为 member_json 的jsonb字段中,名为 event_members_json 。我想创建一个触发器,每次在另一个表调用上完成插入时,event_members会将新的事件成员插入到jsonb字段的数组中。

字段jsonb字段具有以下结构:

extends

这将是将新成员(json对象)插入上述成员数组的语法?? ...

非常感谢!

1 个答案:

答案 0 :(得分:0)

您需要创建一个触发器函数,该函数从插入的值构建jsonb对象,然后将其连接到另一个表中members值的jsonb元素: / p>

CREATE FUNCTION add_jsonb_member () RETURNS trigger AS $$
BEGIN
  UPDATE event_members_json
  SET json_column = jsonb_set(json_column, '{members}', json_column->'members' ||
                              jsonb_build_object('user_id', NEW.user_id,
                                                 'last_name', NEW.last_name,
                                                 ...
                                                )
                             )
  WHERE ...;
  RETURN; -- Assuming AFTER INSERT trigger
END;
$$ LANGUAGE plpgsql;

您应该在表AFTER INSERT上的event_members触发器中调用此函数。