2016-12-14 41 views
1

我正在开发基于XML的项目。我使用Sedna数据库来存储我的集合(包含XML文件和它们的XSD架构文件)。在原生xml数据库中插入uniqness

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

+1

如何XSD模式导入到您的XQuery或数据库? 我认为Sedna不具有架构意识。 – ruvim

+0

我加载了以下文件:从cmd:“se_term -file load_data.xquery mydatabase”,该文件包含:CREATE COLLECTION“mycol”& LOAD“1t.xml”“1”“mycol”& LOAD“2。 xml“”2“”mycol“& LOAD”1.xsd“”1schem“”mycol“& LOAD”2.xsd“”2schem“”mycol“& – scass

+0

亲爱的延斯,你说得对,它不是模式感知的,我必须使用触发器来实现唯一的索引,但如果您有任何想法,我不知道该怎么做,请您帮助我。直到现在我正在学习如何在插入之前编写xQuery触发器,并且我必须在Sedna(我使用Sedna .net驱动程序)中运行此查询,然后如何插入节点并检查其子节点值的唯一性? – scass

回答

2

为了保证唯一性约束,你应该创建BEFORE INSERT进行适当的路径上的每个节点触发。在触发操作中,$NEW传递变量可用于提取新密钥并检查它是否已存在于文档中(请参见手册中的examples)。可以使用函数fn:error来提升错误。

采取以下注:关于触发器:

  1. “禁止在触发器动作的语句中使用序言” - 塞德娜程序员指南,XQuery Triggers

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