Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Добрый день.

Задача создать поле которое по умолчанию имеет значение NULL, по истечению времени оно будет заполняться, и, значения должны быть уникальны в рамках таблицы по данному полю (исключение значение NULL).

Возможно ли создать такой индекс?
27 авг 19, 14:53    [21958366]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
Фильтрованный индекс.
27 авг 19, 14:54    [21958367]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Гавриленко Сергей Алексеевич
Фильтрованный индекс.


не слышал... можете помочь примером? очень буду благодарен. Использую mssql2016
27 авг 19, 15:02    [21958376]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
Игорь_UUS,

https://www.google.com/search?q=mssql filtered index&rlz=1C1GCEA_enRU834RU834&oq=mssql filtered&aqs=chrome.1.69i57j0l5.4520j0j7&sourceid=chrome&ie=UTF-8
27 авг 19, 15:04    [21958377]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Игорь_UUS,

WITH NOCHECK
если я правильно понимаю
27 авг 19, 15:07    [21958379]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Игорь_UUS
Гавриленко Сергей Алексеевич
Фильтрованный индекс.


не слышал... можете помочь примером? очень буду благодарен. Использую mssql2016


CREATE TABLE #t (id int, val int NULL);

CREATE UNIQUE INDEX temp_t ON #t(val) WHERE val IS NOT NULL;

INSERT INTO #t(id, val) VALUES( 1, null), (2, NULL)

UPDATE #t SET val = 1 WHERE id = 1

UPDATE #t SET val = 1 WHERE id = 2

SELECT * FROM #t

DROP TABLE #t
27 авг 19, 15:25    [21958397]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
iap
Member

Откуда: Москва
Сообщений: 46981
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/create-filtered-indexes?view=sql-server-2017
27 авг 19, 15:28    [21958400]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать поле UNIQUE, которое может принимать значение NULL?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Minamoto
Игорь_UUS
пропущено...


не слышал... можете помочь примером? очень буду благодарен. Использую mssql2016


CREATE TABLE #t (id int, val int NULL);

CREATE UNIQUE INDEX temp_t ON #t(val) WHERE val IS NOT NULL;

INSERT INTO #t(id, val) VALUES( 1, null), (2, NULL)

UPDATE #t SET val = 1 WHERE id = 1

UPDATE #t SET val = 1 WHERE id = 2

SELECT * FROM #t

DROP TABLE #t


Спасибо! Вроде как то что надо!
27 авг 19, 15:36    [21958411]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить