PostgreSQL-通过更新行插入XML元素
假设我有一个名为content的表和一个名为images的列,数据类型为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>
<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中有没有办法做到这一点?