#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.
Комментариев нет:
Отправить комментарий