2013-03-04 10 views
5

Mamy tabelę, która ma unikalny indeks w kolumnie, która może akceptować wartości puste. Problem polega na tym, że dowiedzieliśmy się, że ta struktura może akceptować tylko jeden wiersz z wartością NULL. Jeśli spróbujemy dodać drugi wiersz z wartością NULL, otrzymamy błąd podobny. "nie można wstawić duplikatu wiersza klucza w obiekcie ..." "Wiele wartości NULL w kolumnie z indeksem UNIQUE

Czy jest coś, co możemy zrobić, aby zachować indeks tej kolumny i możliwość dodawania wartości NULL do więcej niż jednego wiersza?

+1

Rzuć 'indeks UNIQUE'. – Kermit

+1

Indeks nigdy nie powinien mieć wartości NULL, dlaczego jest potrzebny do wartości zerowej? – KevinA

+2

@KevinA: Co masz na myśli, jeśli mam kolumnę, która jest zerowa, nie powinienem mieć indeksów na jej temat? Dlaczego nie? –

Odpowiedz

25

Tak, można użyć filtrowanego indeksu do obsługi tego. Po prostu upuść istniejący indeks i utwórz nowy indeks, taki jak ten:

CREATE UNIQUE INDEX Index_Name ON TableName(ColumnName) 
WHERE ColumnName IS NOT NULL 

To pozwoli ci mieć duplikaty wartości NULL. Oto dokładny artykuł, jeśli potrzebujesz więcej szczegółów na ten temat.

http://blog.sqlauthority.com/2008/09/01/sql-server-2008-introduction-to-filtered-index-improve-performance-with-filtered-index/

Powiązane problemy