220 votes

Comment ALTER plusieurs colonnes à la fois dans SQL Server

J'ai besoin de MODIFIER les types de données de plusieurs colonnes dans une table.

Pour une seule colonne, le code suivant fonctionne bien :

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0) 

Mais comment modifier plusieurs colonnes en une seule instruction ? Le code suivant ne fonctionne pas :

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0), 
    CM_CommodityID NUMERIC(18,0)

1 votes

Quel est l'avantage perçu de le faire en une seule fois?

11 votes

@onedaywhen - Ainsi, SQL Server ne ferait qu'un seul passage à travers la table pour effectuer toute validation nécessaire contre le nouveau type de données et/ou écrire les colonnes modifiées dans le nouveau format.

8 votes

Contrairement. Ce serait un grand avantage d'avoir une alternative exécutée en 2 heures au lieu de 24 pour plusieurs colonnes sur de grandes tables.

0voto

Donnez toutes les commandes en utilisant une virgule (,) et exécutez. Ici, je n'augmente que la longueur de varchar. Vous pouvez utiliser vos scénarios pour modifier toutes les colonnes de vos tables.

ALTER TABLE  CHANGE   varchar(100), //virgule ici
                                    CHANGE   varchar(100), //virgule ici
                                    CHANGE   varchar(100), //virgule ici
                                    CHANGE   varchar(100);

-1voto

Gaurav Points 1

Nous pouvons le faire. Il vous suffit d'utiliser le mot-clé modify avant chaque colonne que vous souhaitez modifier.

Par exemple : j'ai 3 colonnes A, B, C dans la table XYZ et je dois changer le type de données de varchar(255) à text. Alors je dois écrire :

alter table XYZ modify A text, modify B text, modify C text;

-3voto

Jai Prakash Rai Points 17

Placez l'instruction ALTER COLUMN à l'intérieur d'une parenthèse, cela devrait fonctionner.

ALTER TABLE tblcommodityOHLC modifier ( colonne
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0) )

-3voto

Nous pouvons modifier plusieurs colonnes dans une seule requête comme ceci:

ALTER TABLE `tblcommodityOHLC`
    CHANGE COLUMN `updated_on` `updated_on` DATETIME NULL DEFAULT NULL AFTER `updated_by`,
    CHANGE COLUMN `delivery_datetime` `delivery_datetime` DATETIME NULL DEFAULT CURRENT_TIMESTAMP AFTER `delivery_status`;

Il suffit de donner les requêtes comme séparées par des virgules.

-3voto

Virendra Gawade Points 118

Si j'ai bien compris votre question, vous pouvez ajouter plusieurs colonnes dans une table en utilisant la requête mentionnée ci-dessous.

Requête :

ALTER TABLE nom_table ADD (colonnes1 datatype1, colonne2 datatype2);

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