Créer une colonne int unique qui autorise NULLS dans SSMS

Comment puis-je rendre une colonne int unique – sur une table existante avec des données dans – mais autoriser plusieurs zéros – dans SSMS.

Il y a beaucoup d'loggings dans la table maintenant – et ils ont tous la valeur NULL dans cette colonne maintenant.

J'ai vu des façons de le faire en utilisant un index filtré unique dans TSQL – et je peux voir des façons dans l'interface user de le faire sans autoriser NULLS.

Est-ce que ce n'est pas possible en utilisant l'interface graphique SSMS?

En passant, quelle est la meilleure façon de le faire en utilisant uniquement TSQL pur? Un index filtré unique?

Avec le code:

create unique nonclustered index uixf_mycol on dbo.t (col) where col is not null; 

Dans SSMS:

  1. créer un nouvel index non cluster en cliquant avec le button droit sur le dossier d'index de la table développée dans l'explorateur d'objects
  2. append la colonne
  3. cochez la case unique
  4. ajoutez la clause where dans le panneau de filter .

entrez la description de l'image ici

entrez la description de l'image ici

Vous pouvez créer une contrainte UNIQUE sur la colonne.

 CREATE TABLE Test ( P_Id int, CONSTRAINT uc_ID UNIQUE (P_Id) )