web-dev-qa-db-fra.com

Modifier une colonne Nullable en NOT NULL avec une valeur par défaut

Je suis tombé sur une vieille table aujourd'hui avec une colonne datetime appelée 'Created' qui autorise les valeurs NULL. Maintenant, je voudrais changer ceci pour qu'il soit NOT NULL, et inclure également une contrainte pour ajouter une valeur par défaut (getdate ()).

Jusqu'à présent, j'ai le script suivant, qui fonctionne très bien à condition d'avoir préalablement nettoyé toutes les valeurs nulles:

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

Est-il possible de spécifier également la valeur par défaut dans l'instruction ALTER?

60
Jim B

Je pense que vous devrez le faire en trois déclarations distinctes. J'ai regardé autour de moi et tout ce que j'ai vu semble suggérer que vous pouvez le faire si vous ajoutez une colonne, mais pas si vous modifiez une.

ALTER TABLE dbo.MyTable
ADD CONSTRAINT my_Con DEFAULT GETDATE() for created

UPDATE MyTable SET Created = GetDate() where Created IS NULL

ALTER TABLE dbo.MyTable 
ALTER COLUMN Created DATETIME NOT NULL 
86
Abe Miessler

Vous devrez peut-être d'abord mettre à jour tous les enregistrements nuls par rapport à la valeur par défaut, puis utiliser l'instruction alter table.

Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
10
Gage

Si son serveur SQL, vous pouvez le faire sur les propriétés de la colonne en mode Création

Essaye ça?:

ALTER TABLE dbo.TableName 
  ADD CONSTRAINT DF_TableName_ColumnName
    DEFAULT '01/01/2000' FOR ColumnName
1
BenW

vous devez exécuter deux requêtes:

One - pour ajouter la valeur par défaut à la colonne requise

ALTER TABLE 'Nom_Table` ADD DEFAULT' valeur 'POUR' Nom_Colonne '

je veux ajouter une valeur par défaut à Column IsDeleted comme ci-dessous:

Exemple: ALTER TABLE [dbo]. [Employés] ADD 0 par défaut pour IsDeleted

Two - pour modifier la valeur de la colonne nullable à not null

ALTER TABLE 'nom_table' ALTER COLUMN 'nom_colonne' 'type_données' NON NULL

je veux faire la colonne IsDeleted comme non nul

ALTER TABLE [dbo]. [Employés] Alter Column IsDeleted BIT NOT NULL

1
Jinna Balu