Question Renommer la colonne SQL Server 2008


J'utilise SQL Server 2008 et Navicat. Je dois renommer une colonne dans une table à l'aide de SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Cette déclaration ne fonctionne pas.


480
2018-04-30 09:34


origine


Réponses:


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

Pour votre cas, ce serait:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

N'oubliez pas d'utiliser des guillemets simples pour inclure vos valeurs.


886
2018-04-30 09:37



Alternativement à SQLVous pouvez le faire dans Microsoft SQL Server Management Studio. Voici quelques façons rapides d'utiliser l'interface graphique:

Première voie

Double-cliquez lentement sur la colonne. Le nom de la colonne deviendra 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 sur la table qui contient la colonne qui doit être renommée.
  2. Cliquez sur Conception.
  3. Dans le panneau de conception de la table, cliquez et modifiez la zone de texte du nom de la colonne que vous souhaitez modifier.

Par exemple: MSSMS Table Design Example

REMARQUE: Je sais que OP a spécifiquement demandé une solution SQL, pensé que cela pourrait aider les autres :)


82
2018-02-06 16:46



Essayer:

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

44
2018-04-30 09:39



Ce serait une bonne suggestion d'utiliser une fonction déjà intégrée, mais une autre solution consiste à:

  1. Créez une nouvelle colonne avec le même type de données et le nouveau nom.
  2. Exécutez une instruction UPDATE / INSERT pour copier toutes les données dans une nouvelle colonne.
  3. Déposez l'ancienne colonne.

L'avantage d'utiliser le sp_rename est qu'il prend en charge toutes les relations qui lui sont associées.

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


15
2018-06-27 12:30



Vous devez également spécifier le schéma de la table ou vous pouvez obtenir cette erreur:

Msg 15248, niveau 11, état 1, procédure sp_rename, ligne 238   Le paramètre @objname est ambigu ou le @objtype revendiqué (COLUMN) est   faux.

S'il s'agit d'un script de déploiement, je vous recommande également d'y ajouter une sécurité supplémentaire.

    if  exists (select 1 from sys.columns where name = 'OldColumnName' and object_name(object_id) = 'TableName') AND
not exists (select 1 from sys.columns where name = 'NewColumnName' and object_name(object_id) = 'TableName')
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';

11
2017-11-19 13:08



Vous pouvez utiliser sp_rename renommer une colonne.

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

Le premier paramètre est l'objet à modifier, le deuxième paramètre est le nouveau nom qui sera donné à l'objet, et le troisième paramètre COLONNE informe le serveur que le renommer est pour le column, et peut également être utilisé pour renommer tables, index et alias data type.


9
2018-06-20 13:22



Étant donné que je viens souvent ici et que je me demande comment utiliser les crochets, cette réponse pourrait être utile pour ceux comme moi.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • le OldColumnName ne doit pas être dans []. Ça ne marchera pas.
  • Ne pas mettre NewColumnName dans [], il en résultera [[NewColumnName]].

6
2017-08-25 07:00



Le studio de gestion Sql Server comporte des procédures stockées (SP) définies par le système
L'un d'entre eux est utilisé pour renommer une colonne. sp_rename 

Syntaxe: sp_rename '[nom_table] .old_column_name', 'new_column_name'
Pour plus d'aide, référez-vous à cet article: sp_rename par Microsoft Docs

Remarque: Lors de l'exécution de ce SP le serveur sql vous donnera un message d'avertissement comme 'Attention: Toute modification d'une partie du nom d'un objet peut casser des scripts et des procédures stockées'Ceci est critique seulement si vous avez écrit votre propre sp qui implique la colonne dans la table que vous êtes sur le point de changer.


1
2018-05-08 13:28



Version améliorée de @Taher

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)

SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName

IF EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END

0
2017-07-10 07:35