357 votes

Comment changer le type de données d'une colonne dans SQL Server ?

J'essaie de modifier une colonne d'un varchar(50) à un nvarchar(200) . Quelle est la commande SQL pour modifier cette table ?

592voto

cmsjr Points 16766
ALTER TABLE TableName 
ALTER COLUMN ColumnName NVARCHAR(200) [NULL | NOT NULL]

EDIT Comme indiqué, NULL/NOT NULL aurait dû être spécifié, cf. Réponse de Rob également.

1 votes

Pourquoi faut-il le préciser ? Quel est l'avantage ? Tout ce que je veux laisser tel quel, je n'ai pas besoin de le mentionner, je pense.

6 votes

@TheincredibleJan Ce serait cool, mais malheureusement ça ne fonctionne pas comme ça. Si vous émettez un ALTER TABLE TableName ALTER COLUMN ColumnName pour modifier une colonne existante qui est [NOT NULL] et que vous ne le spécifiez pas explicitement, ce sera [NULL] après, car c'est le cas par défaut.

4 votes

Cela ne fonctionne que si vous n'avez pas de contraintes et d'index sur cette colonne, sinon, vous devez tout supprimer et recréer, ce qui est fastidieux, surtout si vous avez de nombreuses références étrangères sur cette colonne, par exemple lorsque vous passez de tinyint à int.

180voto

Rob Garrison Points 2977

N'oubliez pas la nullité.

ALTER TABLE <schemaName>.<tableName>
ALTER COLUMN <columnName> nvarchar(200) [NULL|NOT NULL]

3 votes

Qu'en est-il de la nullité ? Si je ne veux pas la modifier, quel est l'intérêt de la remettre en place ?

9 votes

Il sera par défaut à NULL après la fin de l'exécution de l'instruction alter table sans que l'on définisse explicitement ce qu'il doit être.

1 votes

@sc305495 Pour être exact, la valeur par défaut sera celle de votre paramètre ANSI_NULL_DEFAULT.

24voto

John Sansom Points 20087

Utilisez l'instruction Alter table.

Alter table TableName Alter Column ColumnName nvarchar(100)

13voto

Yogesh Bende Points 131

La syntaxe pour modifier une colonne dans une table existante en SQL Server (Transact-SQL) est la suivante :

ALTER TABLE table_name
    ALTER COLUMN column_name column_type;

Par exemple :

ALTER TABLE employees
    ALTER COLUMN last_name VARCHAR(75) NOT NULL;

Ce serveur SQL ALTER TABLE L'exemple modifiera la colonne appelée last_name pour être un type de données de VARCHAR(75) et obliger la colonne à ne pas autoriser les valeurs nulles.

voir ici

1 votes

Veuillez ajouter plus d'informations à votre réponse et formater le code / la requête !

6voto

Sallu_Mia Points 106

Pour modifier le type de données

alter table table_name 
alter column column_name datatype [NULL|NOT NULL]

Pour modifier la clé primaire

ALTER TABLE table_name  
ADD CONSTRAINT PK_MyTable PRIMARY KEY (column_name)

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