Comment faire pour modifier la longueur de la colonne de clé primaire dans SQL Server?
Je sais comment faire pour modifier la longueur d'une colonne, mais mon instruction SQL échoue parce que la colonne que je suis en train de changer est un PK, donc, je reçois le message d'erreur suivant:
Msg 5074, Niveau 16, État 1, Ligne 1
L'objet "PK_TableName' dépend de la colonne "PersonID'.
PersonID = PK.
J'ai lu Qu'est-ce que le sql pour modifier la longueur d'un champ d'une colonne de table dans sql server qui ne s'applique qu'aux non-PK colonnes.
J'ai essayé ceci:
ALTER TABLE table_name
ALTER COLUMN column_name <new datatype>
P. S. je ne veux pas supprimer ou de re-créer la table parce que la table contient des millions de lignes...
Je ne pense pas que vous avez un choix...
vous n'aurez pas besoin de supprimer la table, mais vous aurez besoin de déposer le pk contrainte avant de changer la colonne (et peut-être laisser tomber de référencement contraintes FK) qui vous permettent de recréer par la suite
Avez-vous préciser
Je suis en accord avec NDJ, pour autant que je suis conscient que vous devrez déposer le PK contrainte, modifier et réappliquez la contrainte.
Je ne pense pas que vous avez un choix...
vous n'aurez pas besoin de supprimer la table, mais vous aurez besoin de déposer le pk contrainte avant de changer la colonne (et peut-être laisser tomber de référencement contraintes FK) qui vous permettent de recréer par la suite
Avez-vous préciser
NOT NULL
? Êtes-vous à la colonne plus grand (de type varchar(6) varchar(8)) ou plus petite (et vice-versa)? Vérifiez ce post stackoverflow.com/questions/11118568/...Je suis en accord avec NDJ, pour autant que je suis conscient que vous devrez déposer le PK contrainte, modifier et réappliquez la contrainte.
OriginalL'auteur LearnByReading | 2015-05-20
Vous devez vous connecter pour publier un commentaire.
Voir ci-dessous l'exemple d'échantillon comment augmenter la taille de la colonne principale
-- create table d'exemple
- trouvez primaire constratint dans les principales contraintes tables
-- Drop constraint
PK__abc__3213E83F74EAC69B remplacer avec le nom de la contrainte que vous trouverez
dans
table
-- Ajouter not null
-- ajouter une clé primaire à nouveau
Salut @LearnByReading Si cela a aidé à accepter la réponse.
désolé! J'ai oublié "d'accepter" ce!
OriginalL'auteur Indra Prakash Tiwari
OriginalL'auteur The Reason
SQLServer 2008 ne me permet pas de modifier une clé primaire avec des données donc j'ai désactivé toutes les contraintes, a effectué la commande et activé toutes les contraintes de nouveau. Les commandes sont:
OriginalL'auteur Wendel