2016-12-14 3 views
1

Я разрабатываю проект на основе XML. Я использую базу данных Sedna для хранения моей коллекции (содержащей файлы XML и их файлы схемы XSD).uniqness inserting в собственной базе данных xml

Я определяю первичные/уникальные ключи в этих схемах, но до сих пор я могу вставлять повторяющиеся значения (с помощью команды вставки обновления XQuery) в поле первичного ключа.

+1

Как импортируется XSD-схема в ваш XQuery или базу данных? Я думал, что Седна не осознает схему. – ruvim

+0

Я загрузил файл следующим образом: from 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

Чтобы гарантировать ограничение уникальности, вы должны создать ДОПОЛНИТЕЛЬНЫЙ ВСТАВИТЬ ДЛЯ КАЖДОГО УЗЛА на соответствующем пути. В действии триггера переходная переменная $NEW может использоваться для извлечения нового ключа и проверки, существует ли он в документе (см. examples в руководстве). Для повышения погрешности может использоваться функция fn:error.

Возьмите следующее примечание относительно триггеров:

  1. «запрещается использовать пролог в отчетности действия триггера» - Руководство седня программиста, XQuery Triggers.

  2. См. Также bug 51 (хотя, уже закрыт).

Смежные вопросы