如何将新项追加到PostgreSQL中的数组类型列中

时间:2015-03-28 16:46:18

标签: php html mysql postgresql postgresql-9.2

我使用PostgreSQL作为我的应用程序,

任务将是这样的

有些用户使用我的应用程序,我需要根据他们的活动维护每个用户的通知,这样我就可以为每个用户收到大量的通知。

所以一般情况下我们只是将所有通知放在一个单独的表中,然后我们用用户ID映射,所以我们可以只获取它们,但现在我想使用json / array数据类型,所以我可以把整个通知设置为array / json到每个用户行的单元格中。

哪一个更好,存储json或数组?(我在服务器端使用PHP)

如果我们选择其中任何一个,假设我们有10个通知,我得到了第11个,我们如何在单个执行中将新项目附加到数组/ json对象中(可能是UPDATE语句) ? 我不想像基本方式一样选择行,得到现有的数组/ json最后添加新项目(使用PHP处理)并更新它 - 这里需要两次执行,其中可能发生另一次更改并带来数据

那么有没有办法做UPDATE查询只是添加一个新元素或改变PostgreSQL中array / json obejct类型中的现有元素/节点?

1 个答案:

答案 0 :(得分:27)

要将项目附加到PostgreSQL中的数组,您可以使用|| operator或array_append函数。

带||操作

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数据类型。