La colonne de la table est d'un type non valide pour une utilisation en tant que colonne clé dans un index
J'ai une table où je suis de stocker les informations sur les employés. Je veux modifier la table et d'en créer un de la colonne emp_code
comme clé primaire. Son type de données est nvarchar(max)
mais je ne suis pas capable de le définir comme clé primaire.
Je exécutez la requête suivante :
ALTER TABLE user_master
ADD PRIMARY KEY (emp_code)
mais il me donne une erreur :
Msg 1919, Niveau 16, État 1, Ligne 1
Colonneemp_code
dans le tableauuser_master
est d'un type qui n'est pas valide pour l'utiliser comme une clé de colonne dans un index.
Msg 1750, Niveau 16, État 0, La Ligne 1
N'a pas pu créer de contrainte. Voir les erreurs précédentes.
Comment puis-je surmonter cela?
source d'informationauteur hitesh.gawhade
Vous devez vous connecter pour publier un commentaire.
Un index de clé ne peut pas dépasser une taille totale de 900 octets. Modifier le type de données à
NVARCHAR(450)
. Si ce n'est pas adapté, utilisez une clé de substitution (généralement unIDENTITY
colonne).Vous ne pouvez pas utiliser
varchar(max)
. Il n'est pas conçu pour stocker des clés primaires.Trouver quel est le plus long code d'employé, et de créer une taille moyenne de type nvarchar qui couvre votre cas plus longue.
par exemple, la plus longue de l'employé de code est de 70 caractères, essayez:-
...juste pour se couvrir.
Oui, vous avez raison.Avertissement! La longueur maximale est de 900 octets. L'indice
PK__bookmark__2DFA2B0E164452B1
a une longueur maximale de 2000 octets. Pour une combinaison de grandes valeurs, l'insertion/mise à jour de l'opération échouera.ne pas utiliser de
varchar(max)