baskaran chellasamy Ответов: 3

может ли уникальный столбец принимать несколько нулевых значений?


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

Заранее Спасибо

Abhishek Pant

Будете ли вы eloborate, какой тип уникального ключа вы использовали первичный ключ или уникальный ключ.... в случае уникального ключа 1 нулевое значение принимается для каждой строки и столбца. в то время как в случае первичного ключа никакие нулевые значения не принимаются.если вы создали первичный ключ, то||alter table <table name> drop constraint constraint_name Primary key(column_name)

3 Ответов

Рейтинг:
1

Sandeep Mewara

Логически, любой ключ, который может содержать не повторяющиеся (уникальные) значения, является уникальным ключом, NULL является допустимым значением в SQL Server , поэтому он может иметь NULL для единственный раз как и любая другая ценность.

Но согласно стандартам, нет такого правила, что только один NULL это разрешено. Итак, с SQL Server вы застряли только на один раз NULL ценность.
Ссылаться:
http://en.wikipedia.org/wiki/Unique_key[^]
http://connect.microsoft.com/SQLServer/feedback/details/299229/change-unique-constraint-to-allow-multiple-null-values[^]


Рейтинг:
1

OriginalGriff

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

Если вы имеете в виду уникальный индекс в столбце с нулевым значением, ну...не очень хороший idea...but...it это возможно.

Вы можете посмотреть здесь: http://sqlservercodebook.blogspot.co.uk/2008/04/multiple-null-values-in-unique-index-in.html[^]


Sandeep Mewara

Да, но есть ограничение/проблема с SQL Server с несколькими нулевыми значениями.

Рейтинг:
0

Member 10503794

Существует разница между уникальным ключом и уникальным индексом.
Уникальный ключ-это уникальный индекс, но уникальный ключ может иметь только одно нулевое значение, а уникальный индекс может иметь несколько нулевых значений.:

Уникальный ключ:
Создать таблицу tbl_TestUniquekey (ID INT)
ГО
Изменение таблицы tbl_TestUniquekey
Добавить ограничение uk_id UNIQUE NONCLUSTERED (ID )
Иди
Вставить в tbl_TestUniquekey
ЗНАЧЕНИЯ (1),(NULL),(NULL),(2),(NULL)
/*выход:
Msg 2627, Уровень 14, Состояние 1, Строка 29
Нарушение ограничения уникального ключа 'uk_id'. Невозможно вставить дубликат ключа в объект 'dbo.tbl_TestUniquekey'. Значение дубликата ключа равно (<null>).
Заявление было прекращено.
*/



уникальный индекс:

Создать таблицу tbl_TestUnique (ID INT)
ГО

Создайте уникальный некластеризованный индекс idx_tbl_TestUnique_ID
На tbl_TestUnique(ID)
ГДЕ ID НЕ РАВЕН НУЛЮ
ГО
Вставить в tbl_TestUnique
ЗНАЧЕНИЯ (1),(NULL),(NULL),(2),(NULL)

/*Выход:
(Затронуты 5 строк)
*/


Richard Deeming

Индекс допускает только несколько Null значения, потому что это отфильтрованный индекс, который явно исключает эти значения.

Создание отфильтрованных индексов - SQL Server | Microsoft Docs[^]

Это поддерживается в SQL Server 2008 или более поздней версии. Учитывая возраст вопроса, вполне возможно, что ОП все еще использовал более раннюю версию.