Zmiana pola int na unikalne

Zmiana pola int na unikalne
AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

Mam tabelę, w której jedna z kolumn jest typu int. W jaki sposób przy pomocy składni sql (alter table ?) sprawić aby server 'pilnował' aby liczby wpisywane ręcznie się nie powtarzały?
Dodatkowo pole NULL powinno być dopuszczalne. Tabela zawiera kilka tysięcy rekordów.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

ADD UNIQUE INDEX

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 CREATE unique INDEX kod_ind
ON cennik (kod)

A jak poradzić sobie z istniejącymi polami null?

"The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.cennik' and the index name 'kod_ind'. The duplicate key value is (<NULL>).
The statement has been terminated."

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Jeśli kolumna jest unikalna, to nie możesz mieć więcej niż jednego nulla. Tak działa MSSQL.
Jeśli chcesz mieć wartość null albo unikalną, to musisz to zapewnić inaczej.

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

Dzięki. Temat wyczerpany. Do zamknięcia.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3902
0

Od wersji 2008 możesz uzyc where przy tworzeniu indeku

Kopiuj
CREATE UNIQUE NONCLUSTERED INDEX kod_ind
ON cennik(kod)
WHERE kod IS NOT NULL;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.