216 votes

Modifier une table : Comment changer l'attribut 'Allow Nulls' de not null à allow null ?

Comment changer un attribut dans une table en utilisant T-SQL pour autoriser les nullités (not null --> null) ? Modifier la table peut-être ?

13 votes

SQL Server Management Studio crée un script très complexe pour une tâche aussi simple. C'est pourquoi j'ai été confus et j'ai vérifié stackoverflow. Peut-être que c'est le but de la question...

380voto

LukeH Points 110965
-- replace NVARCHAR(42) with the actual type of your column
ALTER TABLE your_table
ALTER COLUMN your_column NVARCHAR(42) NULL

5 votes

Ou juste ALTER TABLE your_table ALTER COLUMN your_column NVARCHAR(42) car elle autorisera par défaut les valeurs nulles si elle n'est pas spécifiée explicitement.

3 votes

Remarque : si vous devez modifier plusieurs colonnes pour autoriser les valeurs nulles, vous devrez effectuer des opérations distinctes. ALTER TABLE .. ALTER COLUMN .. commandes

2 votes

Notez qu'il y a certains cas où cela ne fonctionne pas - voir cette réponse de DBA Stack Exchange si vous obtenez un ALTER TABLE ALTER COLUMN failed because one or more objects access this column.

56voto

Daniel Vassallo Points 142049

Oui, vous pouvez utiliser ALTER TABLE comme suit :

ALTER TABLE [table name] ALTER COLUMN [column name] [data type] NULL

Citant le ALTER TABLE documentation :

NULL peuvent être spécifiés dans ALTER COLUMN pour forcer un NOT NULL pour autoriser les valeurs nulles, sauf pour les colonnes des contraintes PRIMARY KEY.

22voto

Oded Points 271275

ALTER TABLE a raison :

ALTER TABLE MyCustomers ALTER COLUMN CompanyName VARCHAR(20) NULL

2 votes

Êtes-vous sûr de devoir redéfinir les contraintes, et seulement le type de données ? L'article de MSDN ne mentionne pas que les contraintes devraient être redéfinies : "Si NULL ou NOT NULL est spécifié avec ALTER COLUMN, new_data_type [(precision [, scale ])] doit également être spécifié. Si le type de données, la précision et l'échelle ne sont pas modifiés, spécifiez les valeurs actuelles de la colonne."

0 votes

@Daniel Vassallo - Vous avez raison. J'essayais d'être complet, mais changer NULL/NOT NULL devrait être le seul changement.

5voto

Vijay Nandwana Points 497

Pour MySQL, MariaDB

ALTER TABLE [table name] MODIFY COLUMN [column name] [data type] NULL

Utilice MODIFY COLUMN au lieu de ALTER COLUMN .

4voto

laxmi kalake Points 58
ALTER TABLE public.contract_termination_requests
ALTER COLUMN management_company_id DROP NOT NULL;

2 votes

@ÁronLorincz la question ne porte pas sur Postgres. Elle porte sur SQL Server et cette réponse est donc incorrecte.

0 votes

Vous avez raison, mais cela m'a quand même aidé et je pense que c'est un commentaire utile pour les personnes qui trouvent la question via Google. Le titre de la question n'indique pas clairement de quel serveur de base de données il s'agit.

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