807 votes

Renommer une colonne SQL Server 2008

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.

2 votes

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.

1477voto

Habib Points 93087

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.

27 votes

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.

32 votes

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'

3 votes

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.

134voto

Carrie Kendall Points 3450

Alternativement à SQL vous pouvez le faire dans Microsoft SQL Server Management Studio. Voici quelques méthodes rapides utilisant l'interface graphique :

Première voie

Double-cliquez lentement sur la colonne. Le nom de la colonne devient une zone de texte modifiable.


Deuxième voie

Faites un clic droit sur la colonne et choisissez Renommer dans le menu contextuel.

Par exemple :

To Rename column name


Troisième voie

Cette méthode est préférable lorsque vous devez renommer plusieurs colonnes en une seule fois.

  1. Cliquez avec le bouton droit de la souris sur la table qui contient la colonne à renommer.
  2. Cliquez sur Design .
  3. Dans le panneau de conception du tableau, cliquez et modifiez la zone de texte du nom de la colonne que vous souhaitez modifier.

Par exemple : MSSMS Table Design Example

<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 :)

0 votes

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é.

1 votes

Ou l'utilisateur ne dispose pas des privilèges nécessaires.

7 votes

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.

75voto

TechDo Points 11224

Essayez :

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

20voto

NeverHopeless Points 3962

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 :

  1. Créez une nouvelle colonne avec le même type de données et un NOUVEAU NOM.
  2. Exécutez une instruction UPDATE/INSERT pour copier toutes les données dans la nouvelle colonne.
  3. Laissez tomber l'ancienne colonne.

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.

0 votes

* Dans l'étape 1, NULL doit être autorisé dans la nouvelle colonne * Optionnellement, ajouter une quatrième étape pour modifier la nouvelle colonne, afin qu'elle n'autorise pas les valeurs NULL.

13voto

Karan Gandhi Points 300
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

Prograide.com

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.

Powered by:

X