首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BaseX:更新不会被写回

BaseX:更新不会被写回
EN

Stack Overflow用户
提问于 2015-06-13 06:20:25
回答 1查看 780关注 0票数 2

我试图在BaseX中运行以下查询,

代码语言:javascript
复制
let $c := doc('t.xq')//entry return (replace value of node $c/author with 'BaseX' )

输入文件t.xq

代码语言:javascript
复制
<entry>
    <title>Transform expression example</title>
    <author>BaseX Team</author>
  </entry>

我希望它返回修改过的数据,但是它执行而不返回任何数据。上面写着Updates are not written back

我怎样才能看到修改过的entry?哪些命令返回修改后的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-14 08:20:50

引用自Update

在BaseX中,所有更新都在数据库节点或主内存中执行。默认情况下,update操作不影响原始输入文件(信息字符串“更新不写回”显示在查询信息中以指示这一点)。存在以下将XML文档和二进制资源写入磁盘的解决方案:

  • 当启动写回选项时,通过fn:doc或fn:collection检索的主内存文件实例的更新将被传播回磁盘。此选项也可以通过-u在命令行中激活。在运行查询之前,请确保备份原始文档。
  • fn:put或file:write之类的函数可用于将单个XML文档写入磁盘。用文件:写二进制,你可以写二进制资源.
  • 可以使用导出命令将数据库的所有资源写入磁盘。

但是,如果只需要获取update命令的输出,就可以将其复制到一个变量(内存中),并按如下方式转换该变量:

代码语言:javascript
复制
copy $c := doc('t.xq')//entry
modify (
  replace value of node $c/author with 'BaseX'
)
return $c

您还可以使用update,它是编写简单转换表达式的方便运算符。

代码语言:javascript
复制
doc('t.xq')//entry update replace value of node ./author with 'BaseX'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30815736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档