Impossible d'ajouter un “not NULL” colonne de table dans SQL Server

Je comprends que lors de l'ajout d'une colonne à une table contenant des données dans SQL server, la colonne doit avoir une valeur NULL option ou d'un défaut. Sinon, qu'en serait SQL Server pad les nouvelles lignes?

Je suis à une perte pour expliquer pourquoi je ne peux pas ajouter une colonne not NULL à une table vide. J'ai essayé sur deux instances de SQL 2008 et une instance de SQL 2005 avec pas de problèmes. Cependant, un client avec SQL 2000 n'ont ce problème. Est-ce lié à SQL 2000 ou est-ce une option que vous pouvez désactiver. Espérons que c'est une option.

Select @@Version

Microsoft SQL Server 2000 - 8.00.760 (Intel X86) 17 Déc 2002 14:22:05
Copyright (c) 1988-2003 la Société Microsoft Developer Edition sur Windows
NT 5.1 (Build 2600: Service Pack 3)

Select count(*) from actinv

0

ALTER TABLE [ActInv] ADD [BATCHNUMBER] NVARCHAR(50) NOT NULL

Msg 4901, Niveau 16, État 1, Ligne 1
ALTER TABLE permet uniquement les colonnes à ajouter qui peut contenir des valeurs null ou ont un
Définition par DÉFAUT spécifié. La colonne "BATCHNUMBER' ne peut pas être ajouté à la table
'ActInv" car il n'autoriser les valeurs null et ne pas spécifier une valeur par DÉFAUT
définition.

Je sais que cela semble stupide, mais est la table VRAIMENT vide?
Eh bien, je ne Select count(*) from ActInv et elle renvoie zéro!
Slect count(*) renvoie uniquement les enregistrements pour lesquels au moins une colonne n'est pas nulle. Je sais, l'air bête, mais essayez un select * from table à la place.
Je ne savais pas que! Sélectionnez * retourne aucune ligne bien, je viens de vérifier.
Neil N, vous êtes incorrect. créer le tableau b(int) insérer les valeurs de b(null) select count(*) from b -- 1

OriginalL'auteur user69374 | 2009-06-30