Modification de la taille des colonnes dans SQL Server

281

Comment changer la taille de salarycolonne de la colonne dans le employeetableau de numeric(18,0)ànumeric(22,5)

Sree
la source

Réponses:

507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Darren
la source
6
Soyez prudent, si vous modifiez une colonne dans une très grande table de données. Vous pouvez provoquer un plantage (dans mon environnement de toute façon).
DavidTheDev
55
Il est également important que si la colonne est avec attribut, NOT NULLelle doit être mentionnée dans la requête, sinon elle la définira NULLpar défaut. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri
8
Si vous avez un index sur cette colonne, vous devrez le supprimer, puis exécuter le code alter table et puis créer à nouveau l'index
Sr.PEDRO
43
alter table Employee alter column salary numeric(22,5)
Priyank Patel
la source
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Durgesh Pandey
la source
19

L'exécution ALTER COLUMNsans mentionner d'attribut NOT NULLentraînera la modification de la colonne en nullable, si ce n'est déjà fait. Par conséquent, vous devez d'abord vérifier si la colonne est nullable et sinon, spécifier l'attribut NOT NULL. Vous pouvez également utiliser l'instruction suivante qui vérifie au préalable la valeur Null de la colonne et exécute la commande avec l'attribut approprié.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL
Hamid Heydarian
la source
6

Sélectionnez le tableau -> Conception -> modifiez la valeur dans le type de données comme illustré dans la figure suivante.

entrez la description de l'image ici

Enregistrez la conception des tables.

Arnav
la source
vérifiez correctement que vous manquez une étape.
arnav
7
Outils -> Options ... /> Concepteurs -> Concepteurs de tables et de bases de données - décochez "Empêcher l'enregistrement des modifications qui nécessitent une recréation de table"
7anner
Pour la plupart des choses, je préfère les scripts. Mais pour les changements de colonne, j'aime l'interface utilisateur. N'oubliez pas de vérifier NOT NULL ou tout calcul ou toute propriété de colonne supplémentaire. Cliquez simplement sur Enregistrer (après avoir modifié les paramètres dans SSMS en tant que notes @ 7anner).
Jacob H
1

Une approche intéressante peut être trouvée ici: Comment agrandir vos colonnes sans temps d'arrêt par spaghettidba

Si vous essayez d'agrandir cette colonne avec une simple commande «ALTER TABLE», vous devrez attendre que SQLServer passe par toutes les lignes et écrive le nouveau type de données

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Pour surmonter cet inconvénient, il existe une pilule d'agrandissement de colonne magique que votre table peut prendre, et elle s'appelle Row Compression. (...) Avec la compression de lignes, vos colonnes de taille fixe peuvent utiliser uniquement l'espace requis par le plus petit type de données où les données réelles tiennent.

Lorsque la table est compressée au ROWniveau, alors l' ALTER TABLE ALTER COLUMNopération de métadonnées est uniquement.

Lukasz Szozda
la source