PostgreSQL-通过更新行插入XML元素

PostgreSQL-通过更新行插入XML元素,xml,postgresql,Xml,Postgresql,假设我有一个名为content的表和一个名为images的列,数据类型为xml 我有一行,其中的列图像已经有一个值: <Pictures> <Picture ID="1"> <big>../srcs/Big_Buck_Bunny.jpg</big> </Picture> <Picture ID="2"> <big>../srcs/pic_jpeg.jpeg</big>

假设我有一个名为content的表和一个名为images的列,数据类型为xml

我有一行,其中的列图像已经有一个值:

<Pictures>
  <Picture ID="1">
    <big>../srcs/Big_Buck_Bunny.jpg</big>
  </Picture>
  <Picture ID="2">
    <big>../srcs/pic_jpeg.jpeg</big>
  </Picture>
</Pictures>
我想添加以下元素作为

<Picture ID="3">
  <big>../srcs/pic_gif.gif</big>
</Picture>
在DB2中,我知道它可以如中所示完成,但如何使用PostgreSQL完成这项工作


我还找到了一个答案,但没有人回答。

选择图像列中的所有内容,然后在php中添加。。。。然后更新内容集images=katong new xml na添加了id=3的na ang katong picture,其中id=id sa row na imong iupdate。

如果“images”列的xml内容的结构是预定义的,那么在sql语句中,您可以使用每个新条目作为“xmlelement”,然后在postgres中对xml类型进行操作,您可以使用xml处理函数,如xmlconcatsee文档。
这一切都是关于在您选择的RDBMS支持的适当类型上进行操作。

两年后的今天,我遇到了这个问题,并解决了如下问题:

SELECT xmlelement(name "Pictures",
              xmlagg(t1.x), 
    '<Picture ID="3"><big>../srcs/pic_gif.gif</big></Picture>'::xml) xrec   -- option 1
     --xmlelement(name "Picture", xmlattributes(3 as id), xmlelement(name big,'../srcs/pic_gif.gif'))) xrex        -- option 2     
FROM (       
SELECT unnest(XPATH('/Pictures/Picture', images)) X
FROM content WHERE UNQKEY = 8) t1; 

有两个选项可以添加新元素,要么通过字符串,要么通过另一个元素;备选方案1和2。取消您要使用的行的注释。

我喜欢这个想法,但在Postgres中有没有办法做到这一点?