我在我的应用程序中使用 PostgreSQL,
任务会是这样的
有些用户在使用我的应用,我需要根据他们的事件为每个用户维护通知,以便为每个用户收到大量通知。
所以一般来说,我们只是将所有通知放在一个单独的表中,并使用用户 ID 进行映射,所以我们可以获取它们,但现在我想使用 json/array 数据类型,所以我可以把整个通知设置为 array/json 到每个用户行的单元格中。
哪个更好,存储json还是数组?(我在服务器端使用PHP)
如果我们选择两者中的任何一个,假设我们有大约 10 个通知,而我得到了第 11 个,我们如何在单次执行中将新项目附加到数组/json 对象中(可能是 UPDATE 语句) ? 我不想以基本的方式选择行,获取现有的数组/json,最后添加新项目(使用 PHP 处理)并更新它 - 这里需要两次执行,可能会发生另一个变化,这会带来数据丢失
那么有没有一种方法来执行 UPDATE 查询,只添加一个新元素或更改 PostgreSQL 中 array/json 对象类型中的现有元素/节点?
最佳答案
要将项目附加到 PostgreSQL 中的数组,您可以使用 ||
运算符或 array_append
函数。
与||运算符(operator)
UPDATE table SET array_field = array_field || '{"new item"}' WHERE ...
带有array_append函数
UPDATE table SET array_field = array_append(array_field,'new item') WHERE ...
此外,您可以访问此页面以获取数组,http://www.postgresql.org/docs/current/interactive/functions-array.html
我不知道如何使用 JSON 数据类型。
关于postgresql - 如何将新项目附加到 PostgreSQL 中的数组类型列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319801/