sql-server - remplacer - sql server column null to not null




Modifier une colonne: null à non null (8)

J'ai une table qui a plusieurs colonnes entières nullable. Ceci est indésirable pour plusieurs raisons, donc je cherche à mettre à jour tous les nulls à 0 et ensuite mettre ces colonnes à NOT NULL . En plus de changer les valeurs nulles à 0 , les données doivent être conservées.

Je suis à la recherche de la syntaxe SQL spécifique pour modifier une colonne (appelez-la ColumnA ) à " not null ". Supposons que les données ont été mises à jour pour ne pas contenir de valeurs NULL.

Utilisation de SQL Server 2000


Cela a fonctionné pour moi:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

D'abord, faites disparaître toutes les valeurs NULL actuelles:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Ensuite, mettez à jour la définition de la table pour interdire les valeurs NULL:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

En cas de FOREIGN KEY CONSTRAINT ... il y aura un problème si '0' n'est pas présent dans la colonne de la table de clé primaire. La solution pour cela est ...

ÉTAPE 1:

Désactivez toutes les contraintes en utilisant ce code:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

ÉTAPE 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

ÉTAPE 3:

Activer toutes les contraintes en utilisant ce code:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

J'ai eu le même problème, mais le champ utilisé par défaut à null, et maintenant je veux par défaut à 0. Cela a nécessité l'ajout d'une ligne après la solution de mdb:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

Pour le javaDB intégré inclus dans le JDK (la distribution prise en charge par Oracle du Derby Apache), le dessous a fonctionné pour moi

alter table [table name] alter column [column name] not null;

Rendre la colonne non nulle et ajouter la valeur par défaut peut également être fait dans l'interface graphique de SSMS.

  1. Comme d'autres l'ont déjà indiqué, vous ne pouvez pas définir "non null" tant que toutes les données existantes ne sont pas "nulles" comme ceci:

UPDATE myTable SET myColumn = 0

  1. Une fois cela fait, avec la table en mode design (clic droit sur la table et cliquez sur "design view"), vous pouvez simplement décocher les colonnes Allow Nulls comme ceci:

  1. Toujours en mode design avec la colonne sélectionnée, vous pouvez voir les propriétés de la colonne dans la fenêtre ci-dessous et définir la valeur par défaut à 0 là-dedans ainsi que:


Vous devrez le faire en deux étapes:

  1. Mettez à jour la table afin qu'il n'y ait pas de null dans la colonne.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. Modifier la table pour changer la propriété de la colonne
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

cela semble plus simple, mais ne fonctionne que sur Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

En outre, avec cela, vous pouvez également ajouter des colonnes, pas seulement le modifier. Il met à jour à la valeur par défaut (0) dans cet exemple, si la valeur était null.







alter-column