2016-12-14 26 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(雖然已經關閉)。