mssql - sql server rename table




Renommer la colonne SQL Server 2008 (5)

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.


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 de l'utilisation de sp_rename est qu'il prend soin de 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.


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

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • Le OldColumnName ne doit pas être dans [] . Ça ne marchera pas.
  • Ne mettez pas NewColumnName dans [] , cela aboutira dans [[NewColumnName]] .


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

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

S'il s'agit d'un script de déploiement, je vous recommande également d'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';

Vous pouvez utiliser sp_rename pour 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 COLUMN informe le serveur que le nom est renommé pour la column , et peut également être utilisé pour renommer les tables , index et alias data type .





alter-table