Comment append une colonne unique non nulle à une table existante

Est-il possible d'append simplement une colonne unique non nulle à la table existante. Quelque chose comme default = 1 ++? Ou simplement append une colonne unique? J'ai essayé d'append une colonne et de mettre une contre-spécification unique mais MS SQL dit que: L'instruction CREATE UNIQUE INDEX s'est terminée parce qu'une key dupliquée a été trouvée pour le nom de l'object (…) La valeur de la key dupliquée est (<NULL>).

Un moyen d'append simplement une colonne à la table de travail existante avec une contrainte unique? MS SQL devrait-il vraiment penser que la valeur NULL est une valeur?

  1. Ajouter une colonne non nulle avec une valeur par défaut.
  2. Mettre à jour la colonne pour qu'elle soit un entier séquentiel (voir la fonction row_number ())
  3. Ajouter une contrainte UNIQUE ou un index UNIQUE sur une nouvelle colonne

Vous pouvez append une colonne IDENTITY à une table (mais à partir de la question, il n'est pas clair si vous en avez besoin ou non).

L'identité est tout ce dont vous avez besoin:

ALTER TABLE TestTable ADD ID INT IDENTITY(1, 1) 

Si vous voulez un numéro automatique, vous pouvez append une identité.

Si vous devez remplir vous-même les valeurs, ajoutez la colonne permettant les valeurs nulles, mettez à jour les valeurs, vérifiez qu'elles sont uniques et qu'il n'y a pas de valeur NULL, puis ajoutez la contrainte unique et la propriété non null. Il est préférable de le faire pendant une window de maintenance lorsque personne d'autre ne change datatables de cette table.