Страницы

Поиск по вопросам

пятница, 28 февраля 2020 г.

mssql сделать уникальным поле типа xml

#sql #база_данных #sql_server #xml


Имеется MSSQL, есть ряд таблиц, где единственное поле - поле типа xml 

На поля типа xml нельзя накладывать unique при создании, так же как и нельзя использовать
индексы (по крайней мере, у меня не получилось).

Нужно сделать так, чтобы поле было уникальным. 

То есть если мы внесли сначала:

first second
То идентичный файл не попадет в таблицу. Но, например, вот такой попасть должен:
first second second


Ответы

Ответ 1



Колонку типа xml действительно нельзя сделать уникальной. В документации сказано: note that the xml data type does not support the following column and table constraints: ... UNIQUE ... Довольно часто предлагают добавить в таблицу дополнительную колонку (можно вычисляемую) с какой-либо информацией, извлечённой из xml (id) и уже на неё наложить ограничение. Пример: create table #t ( a xml, b as convert(nvarchar(500), a), constraint uq_b unique(b) ) Здесь в таблице колонка a типа xml и вычисляемая колонка b, представляющая из себя конвертированное в строку значение, на него уже можно наложить констрейнт. Однако, длина такого поля ограничена. Индексы на поле типа xml накладывать можно. Смотрите XML Indexes.

Комментариев нет:

Отправить комментарий