【问题标题】:uniqness insertion in native xml database本机 xml 数据库中的唯一性插入
【发布时间】:2016-12-14 11:21:47
【问题描述】:

我正在开发一个基于 XML 的项目。我使用 Sedna 数据库来存储我的集合(其中包含 XML 文件及其 XSD 模式文件)。

我在这些方案中定义了主键/唯一键,但直到现在我可以将重复值(通过 XQuery 更新插入命令)插入到主键字段中。

【问题讨论】:

  • XSD 模式是如何导入到您的 XQuery 或数据库中的?我认为 Sedna 不支持模式。
  • 我按如下方式加载了文件:从 cmd:“se_term -file load_data.xquery mydatabase”,该文件包含:CREATE COLLECTION“mycol”& LOAD“1t.xml”“1”“mycol” &加载“2.xml”“2”“mycol”&加载“1.xsd”“1schem”“mycol”&加载“2.xsd”“2schem”“mycol”&
  • 亲爱的 Jens,你说得对,它不知道模式,我必须使用触发器实现唯一索引,但如果你有任何想法,我不知道该怎么做,请你帮我.到目前为止,我正在学习如何在插入之前编写 xQuery 触发器,并且必须在 Sedna 中运行此查询(我使用 Sedna .net 驱动程序),然后我如何插入节点并检查其子节点值的唯一性??
  • 请问您能update您的问题吗?

标签: xquery sedna nativexml


【解决方案1】:

为了保证唯一性约束,您应该在正确的路径上创建 BEFORE INSERT FOR EACH NODE 触发器。在触发操作中,$NEW 传递变量可用于获取新密钥并检查它是否已存在于文档中(参见手册中的examples)。可以使用fn:error函数来引发错误。

请注意以下有关触发器的注意事项:

  1. “禁止在触发动作的语句中使用 prolog”— Sedna 程序员指南,XQuery Triggers

  2. 另见bug 51(虽然,已经关闭)。

【讨论】:

    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2013-01-14
    相关资源
    最近更新 更多