J'ai besoin ALTER
des types de données de plusieurs colonnes dans une table.
Pour une seule colonne, ce qui suit fonctionne correctement:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Mais comment modifier plusieurs colonnes dans une seule instruction? Ce qui suit ne fonctionne pas:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
sql-server
tsql
alter-column
D.mahesh
la source
la source
Réponses:
Ce n'est pas possible. Vous devrez le faire un par un.
Vous pouvez créer une table temporaire avec vos colonnes modifiées, copier les données, supprimer votre table d'origine et renommer votre table temporaire à votre nom d'origine.
la source
You will need to do this one by one.
alors quel est le problème, utilisez simplement plusieursALTER TABLE ALTER COLUMN
commandes?"Each statement means a new scan"
: Pas nécessairement @erikkallen. Dans certains cas, la colonne ALTER est un simple changement de métadonnées. Vous êtes invités à vous joindre à ma conférence demain sur "SQL Internals - Physical Table Structure under the hood, and implementation on real case scenarios
" pour tout voir en pratique :-)Il n'est pas possible d'effectuer plusieurs
ALTER COLUMN
actions dans une seuleALTER TABLE
instruction.Voir la
ALTER TABLE
syntaxe iciVous pouvez en faire plusieurs
ADD
ou plusieursDROP COLUMN
, mais un seulALTER COLUMN
.la source
Comme d'autres l'ont répondu, vous avez besoin de plusieurs
ALTER TABLE
déclarations.Essayez de suivre:
la source
La solution suivante n'est pas une seule instruction pour modifier plusieurs colonnes, mais oui, elle simplifie la vie:
Générez le
CREATE
script d' une table .Remplacer
CREATE TABLE
parALTER TABLE [TableName] ALTER COLUMN
pour la première ligneSupprimez les colonnes indésirables de la liste.
Modifiez les types de données des colonnes comme vous le souhaitez.
Effectuez une recherche et un remplacement… comme suit:
NULL
,NULL; ALTER TABLE [TableName] ALTER COLUMN
Exécutez le script.
J'espère que cela vous fera gagner beaucoup de temps :))
la source
Comme beaucoup d'autres l'ont dit, vous devrez utiliser plusieurs
ALTER COLUMN
instructions, une pour chaque colonne que vous souhaitez modifier.Si vous souhaitez modifier tout ou plusieurs des colonnes de votre table avec le même type de données (par exemple, étendre un champ VARCHAR de 50 à 100 caractères), vous pouvez générer automatiquement toutes les instructions à l'aide de la requête ci-dessous. Cette technique est également utile si vous souhaitez remplacer le même caractère dans plusieurs champs (par exemple en supprimant \ t de toutes les colonnes).
Cela génère une
ALTER TABLE
déclaration pour chaque colonne pour vous.la source
Si vous effectuez les modifications dans le studio de gestion et générez des scripts, il crée une nouvelle table et insère les anciennes données dans celle-ci avec les types de données modifiés. Voici un petit exemple de modification des types de données de deux colonnes
la source
Si vous ne voulez pas tout écrire vous-même et changer toutes les colonnes avec le même type de données, cela peut vous faciliter la tâche:
Vous pouvez copier et coller la sortie en tant que votre requête
la source
la source
Grâce à l'exemple de code d'Evan, j'ai pu le modifier davantage et le rendre plus spécifique aux tables commençant par des noms de colonnes spécifiques ET gérer également les spécificités des contraintes. J'ai exécuté ce code, puis j'ai copié la colonne [CODE] et l'ai exécutée sans problème.
la source
la source
Nous pouvons modifier plusieurs colonnes dans une seule requête comme ceci:
Donnez simplement les requêtes séparées par des virgules.
la source
Mettez l'
ALTER COLUMN
instruction dans un crochet, cela devrait fonctionner.la source
Si j'ai bien compris votre question, vous pouvez ajouter plusieurs colonnes dans un tableau en utilisant la requête mentionnée ci-dessous.
Requete:
la source