J'utilise SQL Server 2008 et Navicat. J'ai besoin de renommer une colonne dans une table en utilisant SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Cette déclaration ne fonctionne pas.
J'utilise SQL Server 2008 et Navicat. J'ai besoin de renommer une colonne dans une table en utilisant SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Cette déclaration ne fonctionne pas.
Utilisez sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Voir : SQL SERVER - Comment renommer un nom de colonne ou un nom de table
Documentation : sp_rename (Transact-SQL)
Dans votre cas, ce serait :
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
N'oubliez pas d'utiliser des guillemets simples pour encadrer vos valeurs.
Notez que vous ne devez pas mettre le NewColumnName entre parenthèses, car le serveur SQL utilisera alors [[[NewColumnName]]] comme nom de la nouvelle colonne. De même, sp_rename doit être préfixé par EXEC ou EXECUTE.
Vous êtes autorisé et encouragé à mettre des parenthèses dans le premier paramètre, identifiant la colonne, mais pas dans le second. Comme ceci : EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
Vous devez noter dans votre réponse que cette procédure stockée gère les valeurs par défaut, les nullités, etc. contraintes tout en effectuant le renommage, par opposition à un simple alter table
qui échouera si de telles contraintes existent.
Alternativement à SQL
vous pouvez le faire dans Microsoft SQL Server Management Studio. Voici quelques méthodes rapides utilisant l'interface graphique :
Double-cliquez lentement sur la colonne. Le nom de la colonne devient une zone de texte modifiable.
Faites un clic droit sur la colonne et choisissez Renommer dans le menu contextuel.
Par exemple :
Cette méthode est préférable lorsque vous devez renommer plusieurs colonnes en une seule fois.
Par exemple :
<strong>NOTE : </strong>Je sais que l'OP a spécifiquement demandé une solution SQL, mais j'ai pensé que cela pourrait aider d'autres personnes :)
C'est une bonne réponse, mais là où je travaille actuellement, ils ont désactivé la sécurité pour pouvoir faire cela. Vous pouvez faire apparaître le tableau en mode conception, mais le droit de le concevoir ou de le modifier a été supprimé.
Ne fais jamais ça. Vous copiez la table, puis vous supprimez l'ancienne et la renommez. N'utilisez JAMAIS l'interface graphique pour modifier quoi que ce soit dans une table.
Ce serait une bonne suggestion d'utiliser une fonction déjà intégrée mais une autre façon de contourner le problème est de :
L'avantage d'utiliser le sp_rename
est qu'il prend en charge toutes les relations qui lui sont associées.
De la documentation :
sp_rename renomme automatiquement l'index associé chaque fois qu'une contrainte PRIMARY KEY ou UNIQUE est renommée. Si un index renommé est lié à une contrainte PRIMARY KEY, la contrainte PRIMARY KEY est également automatiquement renommée par sp_rename. sp_rename peut être utilisé pour renommer les index XML primaires et secondaires.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Vérifier stackoverflow.com/questions/174582/
7 votes
Notez que cette question n'est pas tout à fait un doublon de la question #174582 que swetha a liée : celle-ci est spécifique à MS SQL, celle-là est indépendante des bases de données.