2009-04-16 10 views
36

Comment supprimer une colonne d'une table existante?Suppression de colonnes dans MS SQL Server

+0

duplication possible de [Comment supprimer une colonne d'une table existante?] (Http: // stackoverflow.com/questions/5626344/comment supprimer une colonne d'une table existante) –

+1

En fait, l'autre question a été écrite 2 ans après celle-ci de sorte que ce serait le doublon. –

Répondre

82

La commande que vous recherchez est:

alter table tblName drop column columnName 

tblName est le nom de la table et columnName est le nom de la colonne, mais il y a quelques choses que vous pourriez avoir besoin à faire en premier.

  • S'il existe des références de clé étrangère à la colonne, vous devez d'abord vous en débarrasser.
  • S'il existe un index utilisant cette colonne, vous devrez soit vous en débarrasser, soit l'ajuster pour ne pas utiliser cette colonne.

Gardez à l'esprit que la performance de cette commande ne peut pas nécessairement être bon. Une option consiste à attendre une période d'arrêt lorsque vous pouvez être certain que personne n'accèdera à la base de données, renommer la table en cours, puis utiliser create table et insert into ... select from pour transférer les colonnes que vous ne voulez pas supprimer.

L'une des versions ultérieures d'Oracle a en fait une suppression logicielle qui peut simplement marquer une colonne comme inutilisée sans la supprimer physiquement. Cela a le même effet puisque vous ne pouvez plus le référencer et qu'il y a une commande le long des lignes alter table ... drop unused columns qui doit être exécutée en temps calme, ce qui fait le dur travail de la supprimer physiquement. Ceci a l'avantage de "faire disparaître" immédiatement les colonnes sans faire baisser les performances de la base de données pendant les heures de pointe.

11

ALTER TABLE XXX DROP COLUMN YYY;

3

Pour les grandes tables, cela peut être très lent. Il peut souvent être beaucoup plus rapide de créer une nouvelle table, une copie de l'ancienne mais avec les changements, et d'insérer les données. Déposez l'ancienne table, puis renommez la nouvelle table.

2

Cela peut également être fait via l'interface graphique SSMS.

J'aime cette méthode car elle vous avertit s'il existe des relations sur cette colonne et peut également les supprimer automatiquement. Comme le dit PaxDiablo, s'il y a des relations, elles doivent d'abord être supprimées.

  1. table Put en mode Création (clic droit sur la table) comme ceci:

enter image description here

  1. Faites un clic droit sur la colonne dans le mode Création de table et cliquez sur "Supprimer colonne"

enter image description here

À ce stade, s'il existe des relations qui doivent également être supprimées, il vous demandera si vous souhaitez également les supprimer.

Questions connexes