Ограничение - уникальное или пустое - PullRequest
0 голосов
/ 25 февраля 2009

В таблице есть столбец nvarchar, который допускает пустые значения. Если есть непустое значение, оно должно быть уникальным.

Можно ли определить это правило без триггера?

РЕДАКТИРОВАТЬ:

http://decipherinfosys.wordpress.com/2007/11/30/multiple-null-values-in-a-unique-index-in-sql-serverdb2-luw/

хороший обходной путь. Единственная проблема, которую я вижу, заключается в том, что первичный ключ в какой-то момент может совпадать с одним из значений в столбце, который я хочу быть уникальным. Вот почему я добавил фиксированную строку, которая, как я знаю, никогда не встречается в ограниченном столбце.

Ответы [ 2 ]

1 голос
/ 25 февраля 2009

Одним из решений, которое не упомянуто в опубликованной ссылке, является индексированное представление. (Создайте представление, исключая строки с нулевыми значениями столбца, и добавьте уникальный индекс для представления).

Этот подход может быть предпочтительным, если вы не хотите добавлять дополнительные столбцы в базовую таблицу. Для обоих подходов необходимо, чтобы были включены правильные настройки ANSI.

1 голос
/ 25 февраля 2009

Существует обходной путь для нескольких значений NULL в столбце уникального ключа в http://decipherinfosys.wordpress.com/2007/11/30/multiple-null-values-in-a-unique-index-in-sql-serverdb2-luw/

По сути, в статье они создают дополнительный столбец, который они оставляют уникальным. Если исходный столбец имеет значение , а не null, его содержимое копируется в уникальный столбец. Всякий раз, когда он нулевой, первичный ключ копируется в столбец. Это немного обходной путь, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...