web-dev-qa-db-fra.com

Requête SQL pour ajouter une nouvelle colonne après une colonne existante dans SQL Server 2005

J'ai besoin d'une requête SQL qui ajoute une nouvelle colonne après une colonne existante, de sorte que la colonne sera ajoutée dans un ordre spécifique.

S'il vous plaît, suggérez-moi si une requête ALTER qui fait cela.

37
Aayushi

Microsoft SQL (autant que je sache) ne vous permet pas de modifier la table et d'ajouter une colonne après une colonne spécifique. Votre meilleur choix consiste à utiliser SQL Server Management Studio ou à supprimer ou à rajouter la table, ou à créer une nouvelle table et à déplacer manuellement les données. ni sont très gracieux.

MySQL fait cependant:

ALTER TABLE mytable
ADD COLUMN  new_column <type>
AFTER       existing_column
33
Brad Christie

ALTER ne le fera pas parce que l'ordre des colonnes n'a pas d'importance pour le stockage ou l'interrogation

Si SQL Server, vous devez utiliser le concepteur de tables SSMS pour organiser vos colonnes, qui peuvent ensuite générer un script qui supprime et recrée la table.

Éditer juin 2013

Lien croisé vers ma réponse ici: Incidences sur les performances/l’espace lors de la commande de colonnes SQL Server?

19
gbn

C'est possible. 

Commencez par ajouter chaque colonne de la manière habituelle (en tant que dernière colonne).

Deuxièmement, dans SQL Server Management Studio Entrez dans Outils => Options.

Dans le menu "Concepteurs" => menu "Concepteurs de tables et de bases de données", décochez l'option "Empêcher l'enregistrement des modifications nécessitant la recréation de tables".

Ensuite, faites un clic droit sur votre tableau et choisissez "Conception" . En mode "Conception", faites simplement glisser les colonnes pour les classer.

N'oubliez pas de sauvegarder.

11
ilans

Si vous souhaitez modifier l'ordre des colonnes sur le serveur SQL, il n'existe actuellement aucun moyen direct de le faire dans SQL Server.

Consultez la page http://blog.sqlauthority.com/2008/04/08/sql-server-change-order-of-column-in-database-tables/

Vous pouvez modifier l’ordre en modifiant le design de la table.

3
ashish.chotalia

Ajoutez d’abord la nouvelle colonne à l’ancienne table via SSMStudio. Aller à la base de données >> table >> colonnes. Faites un clic droit sur les colonnes et choisissez nouvelle colonne . Suivez l'assistant. Créez ensuite la nouvelle table avec les colonnes ordonnées comme vous le souhaitez, comme suit:

select * into my_new_table from (
select old_col1, my_new_col, old_col2, old_col3
from my_old_table 
) as A
;

Puis renommez les tables comme vous le souhaitez via SSMStudio. Allez dans la base de données >> table >> choisissez renommer.

2
wwmbes

Pour MS SQL Server, ALTER TABLE tablename ADD columnname INT fonctionnera. Il est bien entendu impossible d'ajouter une colonne après une colonne spécifique comme dans MySQL avec la commande after.

0
Curiousity